TW202416131A - 用於壓縮操作期間的常數偵測之設備及方法 - Google Patents
用於壓縮操作期間的常數偵測之設備及方法 Download PDFInfo
- Publication number
- TW202416131A TW202416131A TW111138879A TW111138879A TW202416131A TW 202416131 A TW202416131 A TW 202416131A TW 111138879 A TW111138879 A TW 111138879A TW 111138879 A TW111138879 A TW 111138879A TW 202416131 A TW202416131 A TW 202416131A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory block
- memory
- data block
- compression
- constant
- Prior art date
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 63
- 238000000034 method Methods 0.000 title claims abstract description 51
- 230000015654 memory Effects 0.000 claims abstract description 278
- 238000007906 compression Methods 0.000 claims abstract description 157
- 230000006835 compression Effects 0.000 claims abstract description 157
- 230000006837 decompression Effects 0.000 claims description 30
- 238000003860 storage Methods 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 14
- 238000010586 diagram Methods 0.000 description 20
- 238000012545 processing Methods 0.000 description 14
- 239000000872 buffer Substances 0.000 description 13
- 230000006870 function Effects 0.000 description 12
- 238000007667 floating Methods 0.000 description 9
- 238000013519 translation Methods 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 7
- 238000004891 communication Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Landscapes
- Tone Control, Compression And Expansion, Limiting Amplitude (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
一種用於偵測一常數資料塊的設備及方法係於本文中敘述。一設備實施例包括壓縮電路系統,其用以對一記憶體區塊進行壓縮操作;常數偵測電路系統,其用以與對該記憶體區塊進行該等壓縮操作同時,判定該記憶體區塊為僅由一常數值的重複實例組成的一常數資料塊;以及控制器電路系統,其用以基於該判定而將一第一指示與該記憶體區塊相關聯,該第一指示可使用於控制是否中止該等壓縮操作、或是否丟棄從該等壓縮操作所產生的一經壓縮記憶體區塊。
Description
本文中所敘述之本發明的實施例一般有關於資料壓縮操作的最佳化。尤其是,本揭露內容有關於在資料壓縮操作期間,用於常數的偵測之架構延伸。
例如於Linux ZSWAP實施中,在頁面級使用壓縮來創建記憶體階層或層級正變得越來越重要。於記憶體頁調換期間,是將被調換的頁面壓縮並儲存於記憶體中,而非將其等發送到磁碟。這個構想是要增加有效的記憶體容量,同時達到比直接調換至較慢的記憶體層級之更佳的效能。相較於利用大型記憶體容量但沒有壓縮的系統,理想的效能目標是透過頁面壓縮而最大限度地節省記憶體,同時使得對於應用程式的效能影響減至最低。當然,為達到此目標的關鍵需求是低延遲壓縮和解壓縮。
通常,在頁面級利用壓縮的系統傾向於使用相對輕型的壓縮演算法,諸如Lempel-Ziv-Oberhumber(LZO)。這類演算法具有以減少壓縮為代價的更高速之優點。研究表明,使用以軟體為基礎的LZO通常會產生不多的記憶體節省(~4%)。其他諸如Deflate之更主動激進的演算法提供了更好的壓縮率,但會遭遇到增加的壓縮和解壓縮延遲。這些更主動激進的演算法往往也使得以軟體為基礎的實施變得困難。因此,任何能夠改善與壓縮/解壓縮操作相關的延遲之最佳化都是非常可取的。
依據本發明之一實施例,係特定提出一種設備,其包含壓縮電路系統,其用以對一記憶體區塊進行壓縮操作;常數偵測電路系統,其用以與對該記憶體區塊進行該等壓縮操作同時,判定該記憶體區塊為僅由一常數值的重複實例所組成的一常數資料塊;以及控制器電路系統,其用以基於該判定而將一第一指示與該記憶體區塊相關聯。該第一指示可使用於控制是否中止該等壓縮操作、或是否丟棄從該等壓縮操作所產生的一經壓縮記憶體區塊。
於本文中敘述了,用於在一資料塊的壓縮期間偵測該資料塊中的常數值之設備及方法的實施例。於下面的敘述中,闡述了許多具體細節以提供對本發明的實施例的全面理解。然而,熟此技藝者將認識到,本發明可以在沒有該等具體細節中的一或多者情況下實踐、或以其他方法、組建、材料、等來實踐。在其他情況下,為了避免混淆本發明的觀點,不會詳細顯示或敘述眾所周知的結構、材料、或操作。
本說明書中提及的「一個實施例」或「一實施例」表示,關於該實施例所敘述的一特定特徵、結構、或特性是包括於本發明的至少一個實施例中。因此,於本說明書各個不同地方出現的詞組「於一個實施例中」或「於一實施例中」不一定都是指相同的實施例。再者,該等特定的特徵、結構、或特性可在一或多個實施例中以任何適當的方式結合。為了清楚起見,本文的該等圖式中的各個組件可由其等於該等圖式中的標記來提及,而不是藉由特定的元件符號。
在典型的記憶體使用中,相當數量的記憶體頁面(本文中亦稱為記憶體塊或資料塊)是由相同的位元序列(例如,常數值)的重複實例所組成。舉例來說,4096個位元組(4KB)的一典型記憶體頁面可包括該相同常數位元組(例如,0x00或0xFF)的4096(4K)個實例。由於其等之重複性,對這些記憶體頁面執行壓縮及/或解壓縮會使用到原本可節省的有價值的資源。
本發明的實施例以最小的面積成本和設計複雜度,有利地改善了針對記憶體頁面的壓縮及解壓縮效能。舉例來說,執行壓縮操作的一加速器可以擴充有新的常數偵測功能。在諸如Deflate壓縮或任何嵌套壓縮方法之壓縮操作期間,會檢查輸入資料塊或資料流,看其是否一再含有相同的常數值。接著,基於結果而將一指示與該資料塊相關聯。舉例來說,一完成紀錄中的聚合欄位可用該檢查的結果來進行更新。之後,作業系統或系統軟體可檢查該欄位,並且智慧決定是要保留該壓縮的資料塊、或者是以標誌一常數資料塊的元資料來表示該資料塊。可透過保存/恢復狀態來啟動該常數偵測特徵橫跨多個工件。
根據一實施例,不是以一壓縮演算法來壓縮一常數資料塊並將其等儲存於一記憶體中,而是在一資料結構中維持一些元資料的額外位元以將這些資料塊標識為特殊的常數塊,其可以是從少得多的存儲資料中重新產生。這不僅減少了與壓縮和解壓縮相關的延遲,而且還改進了可壓縮性,因為需要較小的儲存所記憶體覆蓋區(footprint)用以儲存。
根據一實施例,係增加一常數偵測功能用以加強一硬體加速器所執行的該等壓縮操作。舉例來說,可對一輸入資料塊或資料流執行一檢查,以查看其是否由相同常數的重複實例所組成,該相同常數可以是一任何指定長度的位元串(例如,位元組(8-bits)、字組(16-bits)、雙字組(32-bits)等)。若該資料塊僅由該相同常數的重複實例所組成,則將其視為一常數資料塊。相反地,若該資料塊包括除了該相同常數以外的值,則其不是一常數資料塊。
根據一實施例,針對一資料塊中的重複常數的檢查,是與該資料塊的壓縮分開執行的。因此,可在該資料塊的壓縮之前、之後或期間的任何時間執行該檢查。於一些實施例中,是提供該檢查的結果作為與該資料塊相關聯的補充資訊,且該檢查的結果可由作業系統(OS)或其他系統軟體/硬體使用以控制與其相關聯的後續操作(例如,儲存、解壓縮等)。舉例來說,根據一實施例,若該常數偵測的結果指出該資料塊並非一常數資料塊,則該等壓縮操作正常進行,且壓縮的資料塊是儲存至該記憶體階層(例如,系統記憶體或快取記憶體)。另一方面,若該結果指出該資料塊是一常數資料塊,則可以使資訊(例如,元資料)關聯或附加至該資料塊,以向該OS及/或其他系統軟體/硬體發訊號通知,該資料塊的壓縮形式可被丟棄以節省或釋放記憶體空間。此外,元資料可被儲存於一資料結構(例如,一目錄、或一輸入緩衝器),以便稍後用於重新產生該資料塊。於一些情況下,該檢查的結果甚至可能導致壓縮操作被中止。
於一個實施例中,不是發布用於壓縮該資料塊和檢查常數的個別工件(這會招致額外的延遲),而是與該資料塊的壓縮同時地自動執行該資料塊的常數偵測。即,回應於壓縮一資料塊的一請求,一硬體加速器對該資料塊一起進行常數檢查操作和壓縮操作,並且輸出一壓縮資料塊以及該常數檢查的結果。該輸出的壓縮資料塊及結果可被儲存至該記憶體階層或其他儲存位置。該作業系統及/或其他系統軟體/硬體隨後可使用此結果來判定是保留或丟棄該壓縮資料塊。
圖1A例示了本發明之實施例可於其上實施的一示例性處理器。CPU 155可以包括一或多個處理器核心。為了簡潔起見,單一個處理器核心(「核心0」)的細節係例示於圖1中。然而,應當理解的是,圖1中顯示的每一核心可具有與核心0相同或相似的一組組件。舉例來說,每一核心可包括專用的層級1(L1)快取記憶體112和層級2(L2)快取記憶體111,用於根據指定的快取記憶體管理策略來將指令及資料存於快取記憶體。該L1快取記憶體112可額外包括一用於儲存指令的指令快取記憶體120、及一用於儲存資料的資料快取記憶體121。儲存於各種處理器快取記憶體中的該等指令及資料是以固定大小的快取記憶體線(例如,長度為64、128、512位元組)的粒度進行管理。於指令執行的期間,資料可暫時儲存於暫存器檔案夾152中。暫存器檔案夾152可包括通用暫存器(GPRs)、向量暫存器、遮罩暫存器等。每一處理器核心更包括一指令提取單元110,用於從主記憶體102及/或一共享層級3(L3)快取記憶體116提取指令;一解碼器或解碼單元130,用以對該等指令進行解碼(例如,將程式指令解碼為微操作或「
uops」);一執行單元140,用以執行該等指令;及一回寫單元150,用以引退指令及回寫結果。
該指令提取單元110可包括各種眾所周知的組件,包括一下一指令指標103,用以儲存要從記憶體102(或該等快取記憶體中的一者)中提取的下一個指令的位址;一指令轉譯後備緩衝區(ITLB)104,用以儲存最近使用的虛擬治實體指令位址的映射,以改進位址轉譯的速度;一分支預測單元102,用以推測地預測指令分之位址;及分支目標緩衝區(BTBs)101,用以儲存分支位址及目標位址。一但被截取,指令就會被串流至該指令管線的其餘階段,包括該解碼單元130、該執行單元140、及該回寫單元150。這些單元的每一者的結構及功能都能由本領域的普通技術人員充分地理解,在此不詳細敘述,以避免混淆本發明的不同實施例的有相關觀點。
該處理器核心可包括一加速器160,用以執行壓縮及解壓縮操作。該加速器160可以硬體、軟體、或其等之組合來實施,且可透過互連件170而通訊耦接至核心0~N及該系統記憶體102。於操作上,該加速器160可接收一資料塊,並且藉由依據諸如LZO、Deflate、或任何嵌套壓縮方法的一壓縮演算法對該資料塊執行壓縮操作,而回應地產生一壓縮資料塊。此外,該加速器160可對一壓縮資料塊實行解壓縮操作,以產生一未壓縮資料塊。
圖1B例示了本發明之實施例可於其上實施的另一示例性處理器。於圖1B中,處理器155的一或多個核心可各自包括其本身的加速器162,用以實行本文中所敘述的壓縮及/或解壓縮操作。該加速器162可實施來代替圖1A的該加速器160,或除了圖1A的該加速器160另外實施。
圖2A例示了諸如圖1A和1B中的處理器155的一處理器中所實施的各種記憶體操作。一記憶體複製操作202是使用於將一記憶體頁面從記憶體複製至快取記憶體,反之亦然。其亦可使用於將一記憶體頁面從一記憶體或快取記憶體複製至相同記憶體或快取記憶體中的另一位置。一壓縮操作204從記憶體或快取記憶體中取出一記憶體頁面,將其壓縮,並將得到的壓縮頁面儲存至該記憶體或快取記憶體中的一位置。一相關的解壓縮操作208從記憶體或快取記憶體中取出一壓縮頁面,將其解壓縮,並將解壓縮的結果儲存至該記憶體或快取記憶體中的一位置。其他諸如解密206及濾波210的額外操作也可以與該解壓縮操作208一起執行。該等記憶體操作亦可包括對來自該記憶體或快取記憶體的頁面執行之各種其他特定的操作212。
圖2B例示了關於該等其他記憶體操作的常數偵測操作/功能的一實施例。具體地,該常數偵測操作220是單獨地並且與該壓縮操作204一起執行。其可執行於來自該記憶體亦或快取記憶體的記憶體頁面。來自該常數偵測操作220的輸出可被儲存至該記憶體或快取記憶體,及/或提供來補充該壓縮操作204,如下文進一步詳述。
圖3A~3C例示了根據本發明的實施例的一加速器的各種操作。熟此技藝者將意識到一些元件有意地被省略,以不混淆關鍵的觀點。其他元件儘管有例示,但是是可選擇的,且因此可被省略以適應所欲的實施態樣。跨多個圖共享的參考數字是被使用於代表相同的元件或相似的元件。於圖3A中,例示了與一非常數資料塊的壓縮及/或解壓縮相關聯的操作。相反地,圖3B和3C例示了一常數資料塊的壓縮及/或解壓縮操作。
現參照圖3A,一加速器360可包括壓縮電路系統362、常數偵測電路系統364、填充電路系統366、解壓縮電路系統368、及控制器電路系統370。根據一實施例,該等電路系統中的一些電路系統(例如,壓縮電路系統或解壓縮電路系統)及與其相關聯的操作可由單獨的加速器來實施。諸如一記憶體頁面的一輸入資料塊310被由該加速器360接收以進行壓縮。該輸入資料塊310可由要被由該加速器360所處理的一工件描述符或工件請求來被識別。該工件描述符可例如由於圖1A~1B所例示之該等處理器核心0~N中的一者所發布,或者是來自該記憶體控制器172。如前文所述,該輸入資料塊310為一非常數資料塊,表示其並非由重複的常數所組成。該加速器所接收的該輸入資料塊310是由該壓縮電路系統362進行處理,以產生一壓縮資料塊320。於一個實施例中,係根據該工件描述符所指定的一特定壓縮演算法(例如,LZO或Deflate)來壓縮該輸入資料塊310。或者,沒有指定壓縮演算法,而該輸入資料塊310是透過該加速計所實施的預設壓縮演算法來壓縮。
接著,將該壓縮塊320儲存至該記憶體階層340中的一位置,諸如圖1A~1B的該系統記憶體102、或該等快取記憶體116或111中的一者。根據一實施例,作為完成對該輸入資料塊310的該等壓縮操作的一部分,會產生一完成紀錄322。該完成紀錄可包括各種不同資訊,諸如與該資料塊310相關聯的記憶體位址及/或該壓縮塊320的儲存位置。根據一實施例,該完成紀錄322亦可包括一常數塊欄位或聚合欄位,以指示與該完成紀錄相關的該資料塊是否為一常數資料塊。該欄位可被初始化或設定為一預設值,以指示相關的資料塊並非為一常數資料塊。該完成紀錄322或其中包含的資訊可被儲存於記憶體階層340的目錄342中。於一些實施例中,完成紀錄322可替代地被儲存於該記憶體階層外部的一資料結構(未示出)中。圖10例示根據一實施例之一工件描述符1010及一完成紀錄1020的細節。該常數塊欄位或聚合欄位可在該完成紀錄1020的未使用部分及/或一現有欄位其中一者之中實現。
根據一實施例,與該壓縮電路系統362執行該等壓縮操作同時,該輸入資料塊310由該常數偵測電路系統364接收並檢查以判定其是否為一常數資料塊。該檢查結果係提供予該控制器電路系統370。於一個實施例中,當該結果指出該輸入資料塊310並非一常數資料塊時,不會採取進一步的動作。或者,該控制器電路系統370可更新紀錄322以指示該壓縮資料塊320並非一常數資料塊。於一些實施例中,該控制器電路系統370會於該壓縮電路系統362產生的該完成紀錄被儲存於該目錄342之前,更新該完成紀錄。
此後,該OS或一應用程式發出對資料(例如,資料塊310)的一請求。該請求可透過一記憶體位址來具體指定所請求的資料,該記憶體位址被使用於在目錄342中執行一查找以找到相配的紀錄或條目。若該請求中的該記憶體位址與和資料塊310相關的該紀錄中的該記憶體位址相配,則檢查該常數塊欄位以查看所請求的資料是否為一常數資料塊。當該欄位指示出資料塊310並非一常數資料塊時,將該壓縮資料塊320取回(即,從記憶體讀取)並發送至該加速器360。於是,該解壓縮電路系統368對該壓縮資料塊320執行解壓縮操作,以產生用以滿足該請求的輸出資料塊312。
圖3B例示依據一實施例之由一加速器對一常數資料塊的該等壓縮及解壓縮操作。如例示的,輸入資料塊314是由該加速器360接收並進行壓縮。於此例中,輸入資料塊314為一常數資料塊。即,其是由重複的位元實例(例如,一常數位元組、字組、或雙字組等)所組成。類似於上文關於圖3A的敘述,該輸入資料塊314可由一工件描述符或工件請求來識別,該工件描述符或工件請求是由該等處理器核心0~N的其中一者或是由該記憶體控制器172發送至該加速器360。該輸入資料塊314由該壓縮電路系統362接收,並且依據一壓縮演算法(例如,LZO或Deflate)進行壓縮以產生一壓縮資料塊324。該壓縮資料塊324接著被儲存於該記憶體階層340中,且與該壓縮塊324相關聯的一完成紀錄326一被產生。該完成紀錄326或其中包含的資訊係儲存至該目錄342或其他資料結構。該完成紀錄中儲存的資訊可包括與該輸入資料塊314相關的該記憶體位址、該壓縮資料塊324的位置、及/或指出該輸入資料塊314是否為一常數資料塊的一指示。於一些實施例中,與該常數資料塊相關的該常數值亦儲存至該完成紀錄326中。
根據一實施例,與該壓縮電路系統362執行該等壓縮操作同時,該輸入資料塊314由該常數偵測電路系統364接收並檢查以判定其是否為一常數資料塊。該檢查結果係提供予該控制器電路系統370。於該資料塊314的例子中,該結果指出其為一常數資料塊時,且相應地,該控制器電路系統370據以更新完成紀錄326。舉例來說,紀錄326的該常數資料欄位可被更新為指示該資料塊314為一常數資料塊的一值。替代或額外地,指出該資料塊314為一常數資料塊的一指示係附加至該輸入資料塊314本身,或以其他方式與之相關聯。
不管該指示是如何附加至該輸入資料塊314或與之相關聯,該指示可由該OS或系統硬體/軟體所使用,以決定如何處理該壓縮塊324。舉例來說,該OS可致使該壓縮資料塊324被丟棄或從該記憶體階層340逐出,或以其他方式被其他資料覆寫。於一些情況下,該OS可簡單地忽略該指示,並且像正常一般處理該壓縮資料塊324,就像其是產生自一非常數資料塊一樣。
在對資料塊314執行該等壓縮及常數偵測操作之後,針對資料塊314的對資料之一請求可隨後由該OS或一應用程式發出。回應於該請求,在目錄342中執行一查找以找到與資料塊314相關的紀錄326。檢查該紀錄326的常數塊欄位以查看資料塊314是否為一常數資料塊。由於資料塊314為一常數資料塊,一請求係發送至該加速器360以從一常數產生所請求的資料塊。舉例來說,儲存於紀錄326中的該常數可被提供予該加速器360的填充電路系統366,其使用該常數以產生該輸出資料塊316。舉例來說,若該常數值為一位元組值,則該填充電路系統可藉由以該位元組值的多個實例(例如,4K個)來填滿一資料塊,來產生該資料塊(例如,一4KB記憶體頁面)。替代地,該OS/軟體可決定忽略指出資料塊314為一常數資料塊的該指示。於這樣的情況中,該壓縮塊324係提供予該加速器360的該解壓縮電路系統368,並且以適當的解壓縮演算法/方法來解壓縮以產生輸出資料塊316,如虛線箭頭所示。
圖3C為根據另一實施例例示與壓縮/解壓縮一常數資料塊相關的該等操作的一方塊圖。與圖3B相同,一輸入資料塊314是由該加速器360接收,並依據一壓縮演算法進行壓縮。與該等壓縮操作同時,該輸入資料塊314由該常數偵測電路系統364檢查以查看其是否為一常數資料塊。該檢查之結果係提供予該控制器電路系統370。
接下來,因為該結果指示出該輸入資料塊314為一常數資料塊,該控制器電路系統370接著詢問該壓縮電路系統以判定輸入資料塊314的壓縮是否已完成。取決於所使用的該壓縮演算法,該等壓縮操作可包括多的階段。舉例來說,於Deflate壓縮的例子中,至少有產生霍夫曼碼/樹的一第一階段、及基於所產生的霍夫曼碼/樹來壓縮該資料塊的一第二階段。若於所有的該等壓縮操作(階段)已經結束之前發現該輸入資料塊314是一常數資料塊,則該控制器電路系統可指示該壓縮電路系統362中止任何剩餘的壓縮操作(階段)。於一個實施例中,該壓縮電路系統362可直接從該控制器電路系統370或該常數偵測電路系統364接收該常數偵測的結果。基於該結果,該壓縮電路系統362可自動中止任何仍未完成的壓縮操作。於一些實施例中,該壓縮電路系統362可於完成一定數量的操作之後或於特定階段之前暫停,以等待該常數偵測的結果。舉例來說,於Deflate壓縮的例子中,該壓縮電路系統370可於完成該第一階段之後暫停,以等待來自該常數偵測的結果,然後再決定是否繼續或中止該第二階段。
根據一些實施例,除了指示該壓縮電路系統362中止壓縮之外,該控制器電路系統370可更新目錄342中的紀錄326,以使該資料塊314與一常數塊的指示相關。如上文所提及的,紀錄326中的一欄位可被更新以指出該資料塊314為一常數資料塊。
此後,當資料塊314被請求時,該OS及/或軟體於該目錄342中執行一查找,並且從紀錄326而判定所請求的資料塊為一常數資料塊。根據一實施例,該OS及/或軟體接著請求該加速器360,從與資料塊314相關的該常數值來產生所請求的資料塊。該常數值可於該請求中提供予該加速器360,或者可從另一來源(例如,一輸入緩衝器或目錄342)查找出。於是,該加速器360的填充電路系統366使用該常數值來產生該輸出資料塊316。舉例來說,該填充電路系統366以該常數值的多個實例(例如,4K個)來填滿一資料塊(例如,一4KB頁面)。值得注意的是,由於資料塊314的壓縮已被中止,沒有壓縮資料塊會被儲存於該記憶體階層340中。如此,與圖3B中例示的該等操作不同,圖3C中的該輸出資料塊316只能從該常數值所產生。
根據一實施例,該完成紀錄中的諸如聚合欄位的一欄位被使用於指示一資料塊是否為一常數資料塊。於一個實施例中,該聚合欄位初始是被寫為「0」。當該常數偵測功能啟用時,若該輸入資料塊中的所有位元組都是一樣的,則該聚合「總和」將會被寫為「1」。否則,若該等輸入位元組中有任一者不同,則該聚合「總和」將會被寫為「0」。若啟用嵌套壓縮,則被比對的該資料為Deflate壓縮或零壓縮zcomp的輸入。於一個實施例中,若該輸入塊的大小為零,則將其視為「全部相同」且因此該聚合「總和」將會被寫為「1」。注意的是,雖然該完成紀錄可顯示該輸入資料塊中的該等位元組全部皆為相同的位元組,但該位元組的實際值並不一定會被儲存於該完成紀錄中,而是從諸如輸入緩衝器的另一來源中查找出。於一個實施例中,該常數偵測功能總是啟用。
於一些實施例中,對一資料塊執行的該等壓縮操作及/或該等常數偵測操作係被劃分為多個從屬的工件,其中每一工件對該資料塊的各自部分進行操作。為了實現跨多個工件的該常數偵測,可使用一資料結構(狀態結構)在不同工件之間傳遞該常數偵測的狀態。舉例來說,該常數偵測的該狀態會需要從工件N的結束傳遞至下一個工件N+1的開始。為此,該等不同工件可存取的一資料結構可被使用來儲存該常數偵測的該狀態。圖4例示依據一實施例之用於保存該等常數偵測操作的部分狀態的示例性欄位。該資料結構可包括一參考值欄位402、一參考值有效欄位(有效欄位)404、及/或一差異值已見欄位(已見欄位)406。該參考值欄位402顧名思義是儲存該參考值(即,該常數),該資料塊中的所有其他值都與該參考值比較對照。該欄位的大小係取決於該參考值的大小。若該常數偵測是實施來檢查一常數位元組,則該參考值欄位只儲存該輸入資料塊或資料流的第一個位元組。至於該有效欄位404,其儲存了該參考值欄位402中儲存的該值(例如,一常數位元組)是否有效的一指示。舉例來說,在該檢查的開始,該有效欄位404並未被設定。接著,隨著該資料塊的該第一個值(位元組)被儲存至該參考值欄位402之中,該有效欄位404被設定為指示出該等常數偵測操作可開始使用該參考值與後續值進行比對。該已見欄位406儲存一指示,其指出是否已於該資料塊或其任何部分中偵測到除了該參考值之外的一值。一設定值指示出該輸入資料塊並非一常數資料塊。
表420例示該有效欄位404及已見欄位406的各種不同組合的可能解釋。若該有效欄位及該已見欄位皆為未設定(例如,「0」),則意味著該參考位元組值應該被忽略且之前沒有看到任何值。這種情況可能發生於執行任何常數偵測操作之前的初始化的期間。當該有效欄位404被設定(例如,「1」)而該可見欄位未被設定(例如,「0」)時,表示該參考值是有效的,且到目前為止所檢查的所有值都等於該參考值。換言之,該常數偵測正在進行中,且到目前為止,該資料塊的所有部分都包含該參考值的實例。於一個實施例中,當偵測到除了該參考值之外的一值時,該已見欄位406被改變成一設定位元(「1」)且該有效欄位404中的該位元被清除(「0」)。此外,該參考值欄位402可清空。因此,一已設定的已見欄位406表示該資料塊中已偵測到至少一個除了該參考值之外的值。於是,當一後續的工件看到一已設定的已見欄位406時,該工件可簡單地中止以節省資源。儘管該參考值在本文中通常被稱為一位元組,但其亦可基於所欲的實施態樣而包括其他大小。舉例來說,該參考值欄位402可延伸為包含一參考字組(16位元)或雙字組(32位元)等。於這樣的實施態樣中,對一4KB資料塊執行的該常數偵測可檢查一參考字組的2K個實例、或一參考雙字組的1K個實例。因此,該常數偵測功能的不同實施例可被實施為檢查不同大小的常數。根據一實施例,若該資料塊的大小並非該參考值的大小的整數倍,則會產生錯誤且該等常數偵測操作會中止。
圖5為例示根據一實施例之與一資料塊的壓縮及常數偵測相關的操作的一流程圖。方法500可在本文中所敘述的該等系統中的任一者之中實施。舉例來說,方法500可於一加速器中實施,諸如圖3A~3C的加速器360。方法500從該開始方塊開始進行。於502,一輸入資料塊被接收。該輸入資料塊可以是一常數資料塊抑或一非常數資料塊。於504,該輸入資料塊被壓縮以產生一壓縮資料塊,並且檢查重複的常數。根據一實施例,該資料塊的壓縮及重複常數的檢查是同時且並行地執行。舉例來說,該輸入資料可透過該壓縮電路系統來壓縮,同時該輸入資料塊的一複本是由該常數偵測電路系統檢查重複常數。於506,做出該輸入資料塊是否為一常數資料塊的一判定。亦即,該輸入資料塊是否完全是由一常數值的重複實例(即,一重複位元串)所組成。若該輸入資料塊並非一常數資料塊,那麼於510,該壓縮資料塊被儲存至該記憶體階層,諸如該系統記憶體或該快取記憶體。然而,若該輸入資料塊於506被發現是一常數資料塊,那麼於508,將該輸入資料塊及/或該壓縮資料塊與一常數塊指示相關聯。如上文所詳述的,於一個實施例中,一指示可被儲存於從該輸入資料塊的壓縮而產生的該完成紀錄之中。接著,於510,該壓縮資料塊被儲存至該記憶體階層。
圖6為例示根據一實施例之與一資料塊的壓縮及常數偵測相關的操作的一流程圖。方法600可在本文中所敘述的該等系統中的任一者之中實施。具體地,方法600可於能夠執行壓縮操作的任何加速器中實施,諸如圖3A~3C的加速器360。方法600從該「開始」方塊開始進行。於602,一輸入資料塊被接收。該輸入資料塊可以是一常數資料塊抑或一非常數資料塊。於604,對該輸入資料塊執行一或多個壓縮操作。同時,亦對該輸入資料塊執行一或多個常數偵測操作以檢查重複的常數。根據一實施例,該等壓縮操作是與該等常數偵測操作同時執行,但與該等常數偵測操作分開執行。舉例來說,一加速器可包括分開的壓縮邏輯/電路系統以及常數偵測邏輯/電路系統,以執行這些操作。於606,做出該輸入資料塊是否為一常數資料塊的一判定。如上文所述,若一輸入資料塊完全是由一常數值的重複實例(即,一重複位元串)所組成,則其為一常數資料塊。若該輸入資料塊並非一常數資料塊,那麼於610,從壓縮操作產生的一壓縮資料塊被儲存至該記憶體階層,諸如該系統記憶體或該快取記憶體。然而,若該輸入資料塊於606被判定為是一常數資料塊,那麼於608,做出對該輸入資料塊的該等壓縮操作是否已完成的一判定。若壓縮操作已經完成,那麼於610儲存該壓縮資料塊。另一方面,若該等壓縮操作尚未完成,那麼該壓縮操作被中止。舉例來說,諸如Deflate的一些壓縮演算法是以多個階段來執行壓縮。若該輸入資料塊在所有該等壓縮階段已經完成之前就被判定為是一常數資料塊,那麼於612中止任何尚未執行的剩餘階段。
現轉至圖7,其例示根據一實施例之與解壓縮一資料塊相關的該等操作的一流程圖。方法700可在本文中所敘述的該等系統中的任一者之中實施。具體地,方法700可於能夠執行解壓縮及/或填充操作的任何加速器中實施,諸如圖3A~3C的加速器360。方法700從該「開始」方塊開始進行。於702,偵測到對一資料塊的一請求。於704,做出該請求的資料塊是否為一常數資料塊的一判定。於一個實施例中,這是由查找該請求的資料塊的狀態來判定。舉例來說,該請求的資料塊的記憶體位址可被使用來查找一目錄(例如,目錄360),以得到與該請求的資料塊相關的一紀錄(例如,320或324)。根據一實施例,該紀錄包含指示出該相關資料塊是否為一常數資料塊的一欄位。於706,若該請求的資料塊並非一常數資料塊,該請求的資料塊的一壓縮版本被取回並且解壓縮,以產生該請求的資料塊。然而,若該請求的資料塊確實是一常數資料塊,例如其是由一常數值的多個實例所構成,那麼於GGQ08,該常數值被使用來產生該請求的資料塊。於一個實施例中,該常數值是由在查找期間從該目錄得到的該紀錄所提供。一填充電路系統可以該常數值的重複實例來填充一緩衝區,以產生該請求的資料塊。不管該請求的資料塊是如何被產生,於710輸出該請求的資料以滿足該資料請求。
圖8例示根據一實施例之常數與非常數資料塊的範例。圖8中顯示的該等列中的每一列代表一資料塊。如上文所提及,每一資料塊可以是一記憶體頁面。儘管一記憶體頁面的典型大小為4KB,亦可取決於所欲實施態樣而使用其他大小(例如,8KB、16KB等)。如本文中所界定的,一常數資料塊是由一特定大小的重複位元序列所組成,而一非常數資料塊則不是。為了例示,資料塊802為一常數資料塊的範例,因為其是由該常數位元組0x00(位元序列「00000000」)的重複實例所構成。同樣地,資料塊804和806各別包含常數位元組0x11(位元序列「11111111」)及0x96(位元序列「1001010」)重複實例。因此,其等亦為常數資料塊。相反地,資料塊808於第一個位元組中包含0xAA(位元序列「10101010」)、於第二個位元組中包含0x55(位元序列01010101)、於第三個位元組中再次包含0xAA(位元序列「10101010」)、於第四個位元組中再次包含0x55(「01010101」)等。由於資料塊808包含超過一個位元組值(0xAA及0x55),其並非一常數資料塊,即使某些位元組值是重複的。值得注意的是,資料塊808可被認為是一常數字組塊,因為該第一個字組值0xAA55在整個該資料塊808是重複的。
圖9為例示該常數偵測操作的一實施例的一流程圖。方法900可由圖3A~3C的常數偵測電路系統364來執行。於902,偵測到一輸入流,將對該輸入流執行常數偵測。如上文所述,對一資料塊的該常數偵測可劃分為多個工件。因此,此處提及的該輸入流可以是整個資料塊或是該資料塊的一部分(例如,一4KB資料塊的1KB部分)。為了實現跨多個工件的常數偵測,一狀態結構中的欄位被使用來保留該偵測的各種狀態/進度。這些欄位的細節係於上文中關於圖4的敘述。於904,做出該狀態結構中的該已見欄位是否已被設定的一判定。若是,那麼於908,該常數偵測被中止,因為該資料塊中已經發現超過一個常數值。若該已見欄位未被設定,則接著於906檢查該有效欄位。若該有效欄位未被設定,那麼於910,該有效欄位被設定,且一參考值被儲存至該狀態結構的該參考值欄位之中。若該常數偵測是被實施以檢查常數位元組,則該輸入流的第一個位元組被儲存至該參考值欄位之中。若該常數偵測是被組配以檢查常數字組,則該輸入流的第一個字組被儲存,以此類推。於912,執行一檢查以查看該目前值(例如,該輸入流的該第一個位元組)是否為唯一剩下的要檢查的值。若是,則該常數偵測完成。另一方面,若有更多的值待檢查,則於914將下一個值(例如,下一個位元組)設為該目前值,並且於918將其與該參考值做比較。回到906,若該有效欄位已經被設定,則該操作直接進行到918,而不需要設定該參考值欄位。若該目前值與該參考值相同,那麼於912,再次檢查該目前值以查看其是否為該輸入流中最後一個待檢查的值,若是,則該常數偵測完成。然而,若於918發現該目前值與該參考值不同,這表示該輸入流包含超過一個常數值且因此有負於該常數資料塊。如此一來,於920,設定該已見欄位以通知任何後續的常數檢查操作,已經偵測到超過一個常數值。選擇性地,於922,該狀態結構中的該有效欄位及/或該參考值欄位被清除。
範例
以下是本發明的不同實施例的範例實施態樣。
範例1:一種設備,其包括壓縮電路系統,其用以對一記憶體區塊進行壓縮操作;常數偵測電路系統,其用以與對該記憶體區塊進行該等壓縮操作同時,判定該記憶體區塊為僅由一常數值的重複實例組成的一常數資料塊;及控制器電路系統,其用以基於該判定而將一第一指示與該記憶體區塊相關聯。該第一指示可使用於控制是否中止該等壓縮操作、或是否丟棄從該等壓縮操作所產生的一經壓縮記憶體區塊。
範例2:範例1的該設備,其中該控制器電路系統是藉由將該第一指示與該記憶體區塊的一記憶體位址相關聯,而將該第一指示與該記憶體區塊相關聯。
範例3:範例1的該設備更包括填充電路系統,其用以回應於對該記憶體區塊的一請求,而在該記憶體區塊是與該第一指示相關時,使用該常數值來產生該記憶體區塊的一複本。
範例4:範例3的該設備更包括解壓縮電路系統,其用以回應於對該記憶體區塊的該請求,而在該記憶體區塊是與該第一指示不相關時,藉由解壓縮該經壓縮記憶體區塊來產生該記憶體區塊的該複本。
範例5:範例1的該設備,其中該等壓縮操作至少包括一分析該記憶體區塊以產生壓縮參數的第一操作、及一基於該等壓縮參數來產生該記憶體區塊的第二操作。
範例6:範例5的該設備,其中該壓縮電路系統係用以回應於該記憶體區塊為一常數資料塊之判定而中止該第二操作。
範例7:範例1的該設備,其更包括用以儲存該經壓縮記憶體區塊的一儲存單元,其中該儲存單元為一系統記憶體或一快取記憶體。
範例8:範例1的該設備,其中該記憶體區塊為一記憶體頁面。
範例9:範例1的該設備,其中該記憶體區塊含有M個位元,該常數值含有N個位元,則該記憶體區塊包含該常數值的M/N次出現。
範例10:範例9的該設備,其中N為8、16、或32其中之一。
範例11:範例1的該設備,其中該等壓縮操作是基於DEFLATE或Lempel-Ziv-Oberhumber(LZO)壓縮方案來執行的。
範例12:範例1的該設備,其中判定該記憶體區塊為一常數資料塊更包括將該記憶體區塊劃分為複數個較小的記憶體區塊、及判定該等複數個較小的記憶體區塊的每一者亦是僅由該常數值的重複實例組成。
範例13:範例12的該設備,其中該常數值係儲存於一狀態結構中,並且與該等複數個較小的記憶體區塊的每一者之中的值做比較。
範例14:一種方法,其包括:對一記憶體區塊進行壓縮操作;判定該記憶體區塊為僅由一常數值的重複實例組成的一常數資料塊,其中該判定是與對該記憶體區塊的該等壓縮操作同時進行;及基於該判定而將一第一指示與該記憶體區塊相關聯,其中該第一指示可使用於控制是否中止該等壓縮操作、或是否丟棄從該等壓縮操作所產生的一經壓縮記憶體區塊。
範例15:範例14的該方法,其中將該第一指示與該記憶體區塊相關聯包括將該第一指示與該記憶體區塊的一記憶體位址相關聯。
範例16:範例14的該方法,更包括回應於對該記憶體區塊的一請求,而在該記憶體區塊是與該第一指示相關時,使用該常數值來產生該記憶體區塊的一複本。
範例17:範例16的該方法,其更包括回應於對該記憶體區塊的該請求,而在該記憶體區塊是與該第一指示不相關時,藉由解壓縮該經壓縮記憶體區塊來產生該記憶體區塊的該複本。
範例18:範例14的該方法,其中該等壓縮操作至少包括一分析該記憶體區塊以產生壓縮參數的第一操作、及一基於該等壓縮參數來產生該記憶體區塊的第二操作。
範例19:範例18的該方法,其更包括回應於該記憶體區塊為一常數資料塊之判定而中止該第二操作。
範例20:範例14的該方法,其更包括將該經壓縮記憶體區塊儲存於一儲存單元中,該儲存單元包含一系統記憶體或一快取記憶體。
範例21:範例14的該方法,其中該記憶體區塊為一記憶體頁面。
範例22:範例14的該方法,其中該記憶體區塊含有M個位元,該常數值含有N個位元,則該記憶體區塊包含該常數值的M/N次出現。
範例23:範例22的該方法,其中N為8、16、或32其中之一。
範例24:範例14的該方法,其中該等壓縮操作是基於DEFLATE或Lempel-Ziv-Oberhumber(LZO)壓縮方案來執行的。
範例25:範例14的該方法,其中判定該記憶體區塊為一常數資料塊更包括將該記憶體區塊劃分為複數個較小的記憶體區塊、及判定該等複數個較小的記憶體區塊的每一者亦是僅由該常數值的重複實例組成。
範例26:範例25的該設備,其更包括:將該常數值儲存於一狀態結構中;及將該常數值與該等複數個較小的記憶體區塊的每一者之中的值做比較。
範例27:一種共享快取記憶體系統,其包含用以執行如上述該等範例中任一者的一方法之手段。
範例28:一種設備,其包含用以執行如上述該等範例中任一者的一方法之手段。
範例29:包括機器可讀指令的機器可讀儲存器,該機器可讀指令被執行時,實施如上述該等範例中任一者的一方法或實現如上述該等範例中任一者的一設備或系統之機器可讀指令。
示例性處理器架構及資料類型
圖11A為根據本發明之實施例例示,一示例性有序管線及一示例性暫存器重命名、無序發布/執行管線兩者的一方塊圖。圖11B為根據本發明之實施例例示,將包括於一處理器中的一有序架構核心及一示例性暫存器重命名、無序發布/執行架構核心的一示例性實施例的一方塊圖。圖11A~11B中的該等實線框例示該有序管線及有序核心,而可選擇的虛線框之添加例示該暫存器重命名、無序發布/執行管線及核心。鑒於有序態樣為無序態樣的子集,將會敘述該無序態樣。
於圖11A中,一處理器管線1100包括一提取級1102、一長度解碼級1104、一解碼級1106、一分配級1108、一重命名級1110、一排程(也稱為分派或發布)級1112、一暫存器讀取/記憶體讀取級1114、一執行級1116、一回寫/記憶體寫入級1118、一例外處置級1122、及一提交級1124。
圖11B展示處理器核心1190,其包括耦接至執行引擎硬體1150之前端硬體1130,且兩者皆被耦接至記憶體硬體1170。核心1190可為縮減指令集運算(RISC)核心、複雜指令集運算(CISC)核心、極長指令字(VLIW)核心、或混合式或替代式核心類型。而作為又一選項,核心1190可為特定用途核心,舉例而言,諸如網路或通訊核心、壓縮引擎、共處理器核心、通用運算圖形處理單元(GPGPU)核心、圖形核心或其類似者。
該前端硬體1130包括耦接至一指令快取記憶體硬體1134的一分支預測硬體1132,而該指令快取記憶體硬體1134係耦接至一指令轉譯後備緩衝區(TLB)1136、該指令轉譯後備緩衝區1136係耦接至一指令提取硬體1138,該指令提取硬體1138係耦接至一解碼硬體1140。該解碼硬體1140(或解碼器)可對指令進行解碼,並產生作為輸出的一或多個微操作、微碼進入點、微指令、其他指令、或其他控制訊號,其等係由該等原始指令解碼而來、或以其他方式反映該等原始指令、或衍生自該等原始指令。該解碼硬體1140可使用各種不同的機制來實現。適當的機制的範例包括,但不限於,查找表、硬體架構實現、可程式化邏輯陣列(PLAs)、微碼唯讀記憶體(ROMs)等。於一個實施例中,該核心1190包括一微碼ROM、或其他儲存某些巨集指令的微碼之媒介(例如,於解碼硬體1140中、或以其他方式在該前端硬體1130之中)。該解碼硬體1140係耦接至該執行引擎硬體1150中的一重命名/分配器硬體1152。
該執行引擎硬體1150包括該重命名/分配器硬體1152,其耦接至一引退硬體1154及一或多個排程器硬體1156的集合。該排程器硬體1156代表任何數量的不同排程器,包括保留站、中央指令窗等。該排程器硬體1156係耦接至該實體暫存器檔案夾硬體1158。該實體暫存器檔案夾硬體1158的每一者代表一或多個實體暫存器檔案夾,不同的實體暫存器檔案夾儲存一或多個不同的資料類型,諸如純量整數、純量浮點、包封整數、包封浮點、向量整數、向量浮點、狀態(例如,指令指標,其為將被執行的下一個指令的位址)等。於一個實施例中,該實體暫存器檔案夾硬體1158包括一向量暫存器硬體、一寫入遮罩暫存器硬體、及一純量暫存器硬體。此暫存器硬體可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。該實體暫存器檔案夾硬體1158係與該引對硬體1154部分重疊,以例示可實施暫存器重命名及無序執行的各種不同方式(例如,使用紀錄緩衝區及引退暫存器檔案夾;使用未來檔案夾、歷史緩衝區、及引退暫存器檔案夾;使用暫存器映射及暫存器池等)。該引退硬體1154及該實體暫存器檔案夾硬體1158係耦接至執行叢集1160。該執行叢集1160包括一或多個執行硬體1162的集合、及一或多個記憶體存取硬體1164的集合。該執行硬體1162可對各種類型的資料(例如,純量浮點、包封整數、包封浮點、向量整數、向量浮點)執行各種運算(例如,移位、加法、減法、乘法)。儘管一些實施例可包括專用於特定功能或功能集的多個執行硬體,但其他實施例可僅包括一個執行硬體或全部執行所有功能的多個執行硬體。該排程器硬體1156、該實體暫存器檔案夾硬體1158及該執行叢集1160是顯示為可能是複數,因為某些實施例針對某些類型的資料/操作會創建個別的管線(例如,純量整數管線、純量浮點/包封整數/包封浮點/向量整數/向量浮點管線、及/或記憶體存取管線,其等每一者具有自己的排程器硬體、實體暫存器檔案夾硬體、及/或執行叢集──在記憶體存取管線的情況下,會實施某些實施例,其中只有此管線的執行叢集具有該記憶體存取硬體1164)。應該要理解的是,在使用個別的管線的情況下,這些管線中的一或多者可為無序發布/執行,而其他則為有序。
該組記憶體存取硬體1164係耦接至記憶體硬體1170,該記憶體硬體1170包括耦接至資料快取記憶體硬體1174之資料TLB硬體1172,該資料快取記憶體硬體1174耦接至層級2(L2)快取記憶體硬體1176。在一範例性實施例中,記憶體存取硬體1164可包括負載硬體、儲存位址硬體及儲存資料硬體,其各自係耦接至記憶體硬體1170中之資料TLB硬體1172。指令快取記憶體硬體1134係進一步耦接至記憶體硬體1170中之層級2(L2)快取記憶體硬體1176。L2快取記憶體硬體1176係耦接至一或多個其他層級之快取記憶體且最終耦接至主記憶體。
藉助於範例,範例性暫存器重命名、無序發布/執行核心架構可如下來實施管線1100:1)指令提取1138執行提取及長度解碼級1102與1104;2)解碼硬體1140執行解碼級1106;3)重命名/分配器硬體1152執行分配級1108及重命名級1110;4)排程器硬體1156進行排程級1112;5)實體暫存器檔案夾硬體1158及記憶體硬體1170進行暫存器讀取/記憶體讀取級1114;執行叢集1160進行執行級1116;6)記憶體硬體1170及實體暫存器檔案夾硬體1158進行回寫/記憶體寫入級1118;7)各種硬體可被包括於例外處置級1122;以及8)引退硬體1154及實體暫存器檔案夾硬體1158進行提交級1124。
該核心1190可支援包括本文所述之該(等)指令的一或多個指令集(例如,x86指令集(具有一些已加至較新版本的延伸);加州森尼韋爾的美普思科技的MIPS指令集;加州森尼韋爾的安謀控股公司的ARM指令集(具有諸如NEON的選擇性額外延伸))。於一個實施例中,該核心1190包括邏輯,支援一包封資料指令集延伸(例如,AVX1、AVX2、及/或某些形式的通用向量友善指令形式(U=0及/或U=1)),藉此使該等操作能夠被許多使用包封資料來執行的多媒體應用程式所使用。
應理解的是,該核心可支援多執行緒架構(執行兩個或兩個以上的並行操作或執行緒的集合),並且可以以多種方式來支援多執行緒架構,包括時間切片多執行緒架構、同時多執行緒架構(其中,單個實體核心為該等執行緒的每一者提供一邏輯核心,該實體核心同時進行多執行緒處理)、或其等之組合(例如,諸如英特爾® 超執行緒技術中的時間切片提取和解碼以及之後的同時多執行緒處理)。
雖然暫存器重命名是在無序執行的上下文中描述的,但應該理解的是,暫存器重命名可以用在有序架構中。雖然所例示之處理器的實施例還包括個別的指令和資料快取記憶體硬體1134/1174及一共享的L2快取記憶體硬體1176,但替代實施例可具有同時用於指令和資料兩者的單個內部快取記憶體,舉例而言諸如層級1(L1)內部快取記憶體、或多層級內部快取記憶體。在一些實施例中,該系統可包括一內部快取記憶體和在該核心及/或該處理器外部的一外部快取記憶體之組合。替代地,所有快取記憶體都可以在該核心及/或該處理器之外部。
圖12是根據本發明的實施例的一處理器1200的一方塊圖,其可具有超過一個核心、可以具有一整合式記憶體控制器、並且可具有整合式圖形。圖12中的實線框例示了具有單個核1202A、一系統代理1210、一組一或多個匯流排控制器硬體1216的一處理器1200,而可選擇的虛線框之添加例示了具有多個核心1202A~1202N、該系統代理硬體1210中的一組一或多個整合式記憶體控制器硬體1214、及特定用途邏輯1208的一替代處理器1200。
因此,處理器1200之不同實施可包括:1)一CPU,其具有特定用途邏輯1208及核心1202A~1202N,特定用途邏輯1208為整合式圖形及/或科學(處理量)邏輯(其可包括一或多個核心),核心1202A~1202N為一或多個通用核心(例如,通用有序核心、通用無序核心、或兩者之一組合);2)具有核心1202A~1202N之一共處理器,核心1202A~1202N為主要欲用於圖形及/或科學(處理量)之大量特定用途核心;及3)具有核心1202A~1202N之一共處理器,核心1202A~1202N為大量通用有序核心。因此,處理器1200可為一通用處理器、共處理器或特定用途處理器,舉例而言諸如一網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、一高處理量多整合式核心(MIC)共處理器(其包括30或更多個核心)、嵌入式處理器、或類似者。該處理器可被實施於一或多個晶片上。處理器1200可為利用多種製程技術中之任一者而為一或多個基材之部分及/或可在一或多個基材上被實施,舉例而言,諸如BiCMOS、CMOS或NMOS。
該記憶體階層包括該等核心內部之一或多層級的快取記憶體、一組或一或多個共享快取記憶體硬體1206、及耦接至該組整合式記憶體控制器硬體1214的外部記憶體(未示出)。該組共享快取記憶體硬體1206可包括一或多個中間層級快取記憶體,諸如層級2(L2)、層級3(L3)、層級4(L4)、或其他層級的快取記憶體、一最末級快取記憶體(LLC)、及/或其等之組合。儘管於一個實施例中,一環基互連硬體1212使該整合式圖形邏輯1208、該組共享快取記憶體硬體1206及該系統代理硬體1210/整合式記憶體控制器硬體1214互相連接,替代的實施例可使用任何數量的已知技術來使此類硬體互相連接。於一個實施例中,一或多個快取記憶體硬體1206和該等核心1202A~1202N之間保持一致性。
於一些實施例中,該等核心1202A~1202N中的一或多者能夠進行多執行緒處理。該系統代理1210包括協調並操作該等核心1202A~1202N的那些組件。該系統代理硬體1210例如可包括一電源控制單元(PCU)及一顯示器硬體。該PCU可以是或包括調節該等核心1202A~1202N和該整合式圖形邏輯1208的電源狀態所需要的邏輯及組件。該顯示器硬體是用於驅動一或多個外部連接的顯示器。
該等核心1202A~1202N在架構指令集方面可以是同質的或異質的;即,該等核心1202A~1202N中的兩個或兩個以上的核心能夠執行相同的指令集,而其他核心僅能夠執行該指令集的子集或不同的指令集。在一個實施例中,該等核心1202A~1202N是異質的並且包括下文敘述的「小」核心及「大」核心。
圖13~16為範例性電腦架構之方塊圖。用於膝上型電腦、桌上型電腦及手持式PC之此等技術中已知的其他系統設計及組配、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持式裝置及各種其他電子裝置亦為合適的。一般來說,能夠併入如本文所揭露之處理器及/或其他執行邏輯的大多種系統或電子裝置通常為合適的。
現參考圖13,其顯示了根據本發明的一個實施例的一系統1300的方塊圖。該系統1300可包括耦接至一控制器集線器1320的一或多個處理器1310、1315。在一個實施例中,該控制器集線器1320包括一圖形記憶體控制器集線器(GMCH)1390及一輸入/輸出集線器(IOH)1350(可能在不同的晶片上);該GMCH 1390包括記憶體和圖形控制器,記憶體1340和一共處理器1345耦接到這些控制器;該IOH 1350將輸入/輸出(I/O)裝置1360耦接至該GMCH 1390。替代地,該記憶體和圖形控制器之一或兩者係整合於該處理器內(如本文所述),該記憶體1340及該共處理器1345是直接耦接至該處理器1310,而該控制器集線器1320與該IOH 1350在單個晶片中。
額外處理器1315的可選性質在圖13中是用虛線表示。每一處理器1310、1315可包括本文中所敘述的該等處理核心中的一或多個,並且可以是該處理器1200的某個版本。
該記憶體1340例如可以是動態隨機存取記憶體(DRAM)、相變化記憶體(PCM)、或兩者的組合。對於至少一個實施例,該控制器集線器1320是透過諸如一前端匯流排(FSB)、點對點介面、或類似連接1395的多點匯流排與該(等)處理器1310、1315通訊。
在一實施例中,該共處理器1345為特定用途處理器,舉例而言,諸如高處理量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或其類似者。在一實施例中,該控制器集線器1320可包括整合式圖形加速器。
在包括架構、微架構、熱、功耗特性及類似者的一系列品質指標方面,實體資源1310、1315之間可以有各種差異。
於一個實施例中,該處理器1310執行指令,該等指令控制一般類型的資料處理操作。該等指令內嵌入的可以是共處理器指令。該處理器1310將這些共處理器指令識別為,應該由附加的共處理器1345執行的類型。因此,該處理器1310在一共處理器匯流排或其他互連件上向共處理器1345發布這些共處理器指令(或表示共處理器指令的控制訊號)。共處理器1345接受並執行接收到的共處理器指令。
現參考圖14,其顯示了依據本發明的實施例的一第一更具體示例性系統1400的一方塊圖。如圖14所示,多處理器系統1400是一點對點互連系統,並且包括透過一點對點互連件1450耦接的一第一處理器1470和一第二處理器1480。處理器1470和1480中的每一者可以是該處理器1200的某些版本。在本發明的一個實施例中,處理器1470和1480分別是處理器1310和1315,而共處理器1438是共處理器1345。在另一實施例中,處理器1470和1480分別是處理器1310共處理器1345。
處理器1470和1480是顯示為分別包括整合式記憶體控制器(IMC)硬體1472和1482。處理器1470還包括作為其匯流排控制器硬體的一部分的點對點(P-P)介面1476和1478;類似地,第二處理器1480包括P-P介面1486和1488。處理器1470、1480可使用P-P介面電路1478、1488透過點對點(P-P)介面1450來交換資訊。如圖14所示,IMCs 1472和1482將該等處理器耦接到分別的記憶體,即一記憶體1432及一記憶體1434,其等可以是本地附接至個別處理器的主記憶體的部分。
處理器1470、1480各自可使用點對點介面電路1476、1494、1486、1498透過個別的P-P介面1452、1454而與一晶片組1490交換資訊。晶片組1490可選擇性地經由高效能介面1439而與該共處理器1438交換資訊。在一個實施例中,該共處理器 1438 是一特定用途處理器,舉例而言,諸如高流通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或類似者。
共享快取記憶體(未示出)可被包括於處理器中或位在兩個處理器的外部,再經由P-P互連件與處理器連接,使得當處理器係處於低功率模式中時,處理器之本地快取記憶體資訊任一者或兩者可被儲存於共享快取記憶體中。
晶片組1490可透過一介面1496而耦接至一第一匯流排1416。在一個實施例中,第一匯流排1416可以是外部組件互連標準(PCI)匯流排,或者是諸如PCI Express匯流排或另一個第三代I/O互連匯流排的一匯流排,儘管本發明的範圍不限於此。
如圖 14 所示,各種I/O裝置1414 可耦接至第一匯流排1416,連同將第一匯流排1416耦接至一第二匯流排1420的一匯流排橋接器1418。在一個實施例中,諸如共處理器、高流通量MIC處理器、GPGPU’s、加速器(諸如圖形加速器或數位訊號處理(DSP)硬體)、現場可程式邏輯閘陣列、或任何其他處理器的一或多個額外的處理器1415係耦接至第一匯流排1416。在一個實施例中,第二匯流排1420可以是低接腳計數(LPC)匯流排。於一個實施例中,各種裝置可耦接至第二匯流排1420,包括例如鍵盤及/或滑鼠1422、通訊裝置1427、及諸如磁碟驅動器或其他大容量存儲裝置的一儲存器硬體1428,其可以包括指令/程式碼和資料1430。此外,一音訊I/O 1424可耦接至該第二匯流排1420。注意,其他架構也是可能的。例如,代替圖14的點對點架構,一系統可以實現多點匯流排或其他這樣的架構。
現參考圖15,其顯示了依據本發明的實施例的一第二更具體示例性系統1500的一方塊圖。圖 14 和 15 中相同的元件帶有相同的元件符號,並且圖 14 的某些方面已從圖 15 中省略,以避免混淆圖 15 的其他方面。
圖15例示該等處理器1470、1480可分別包括整合式記憶體及I/O控制邏輯(「CL」)1472及1482。因此,該等CL 1472、1482包括整合式記憶體控制器硬體,且包括I/O控制邏輯。圖15不僅例示耦接至該等CL 1472、1482的該等記憶體1432、1434,而且還例示I/O裝置1514亦耦接至該控制邏輯1472、1482。傳統I/O裝置1515係耦接至晶片組1490。
現參考圖16,其顯示了依據本發明的實施例的一SoC 1600的一方塊圖。圖12中相似的元件帶有相似的元件符號。此外,虛線框是較先進SoCs上的可選擇功能。於圖16中,一互連硬體1602係耦接至:一應用處理器1610,其包括一組一或多個核心1202A~1202N及共享快取記憶體硬體1206;一系統代理硬體1210;一匯流排控制器硬體1216;一整合式記憶體控制器硬體1214;一組或一或多個共處理器1620,可包括整合式圖形邏輯、一影像處理器、一音頻處理器、及一視頻處理器;一靜態隨機存取記憶體(SRAM)硬體1630;一直接記憶存取(DMA)硬體1632;以及用於耦接至一或多個外部顯示器的一顯示器硬體1640。於一個實施例中,該(等)共處理器1620包括一特殊用途處理器,舉例來說,諸如一網路或通訊處理器、壓縮引擎、GPGPU、一高處理量MIC處理器、嵌入式處理器或類似者。
本文中所揭示之機制的實施例可採用硬體、軟體、韌體、或此等實施方法之一組合來被實現。本發明之實施例可被實現為在包含至少一個處理器、一儲存系統(包括依電性及非依電性記憶體及/或儲存元件)、至少一個輸入裝置、及至少一個輸出裝置之可程式化系統上執行之電腦程式或程式碼。
程式碼,諸如圖14中所例示之程式碼1430,可被應用於輸入指令以執行本文所描述之功能並產生輸出資訊。以已知方式,輸出資訊可被應用於一或多個輸出裝置。為了本申請案之目的,處理系統包括具有處理器之任何系統,該處理器舉例來說,諸如數位訊號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)或微處理器。
程式碼可被以高階程序或物件導向式程式設計語言來實現以與處理系統通訊。若需要,程式碼亦可用組合語言或機器語言來實現。事實上,本文中所描述之機制在範疇上並不限於任何特定程式設計語言。在任何情況下,該語言可以是編譯語言或解譯語言。
至少一個實施例之一或多個態樣可藉由儲存於機器可讀媒體上的表示處理器內之各種邏輯之代表性指令來被實施,該等代表性指令當由機器讀取時致使該機器建構用以執行本文中所描述之技術的邏輯。被稱為「IP核心」之此等表示可被儲存於有形機器可讀媒體上,並且供應至各種消費者或製造設施,以載入至實際上構成該邏輯或處理器之建構機器中。
此等機器可讀儲存媒體可包括但不限於由機器或裝置製造或形成之物品的非暫時性有形配置,包括儲存媒體,諸如硬碟、包括軟碟之任何其他類型之磁碟、光碟、緊密光碟唯讀記憶體(CD-ROM)、可重寫緊密光碟(CD-RW)及磁光碟、諸如唯讀記憶體(ROM)之半導體裝置、諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)之隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電可抹除可程式化唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁卡或光學卡,或適合於儲存電子指令的任何其他類型之媒體。
因此,本發明之實施例亦可包括含有指令或含有設計資料之非暫時性有形機器可讀媒體,諸如硬體描述語言(HDL),其界定本文中所描述之結構、電路、設備、處理器及/或系統特徵。此等實施例亦可被稱作程式產品。
在一些情況下,指令轉換器可被使用來將指令自來源指令集轉換至目標指令集。舉例而言,指令轉換器可將指令轉譯(例如,使用靜態二進位轉譯、包括動態編譯之動態二進位轉譯)、轉化、模仿或以其他方式轉換成要由核心所處理之一或多個其他指令。指令轉換器可以軟體、硬體、韌體或其組合予以實施。指令轉換器可在處理器上、在處理器外,或部分地在處理器上且部分地在處理器外。
圖17是根據本發明之實施例對照使用軟體指令轉換器將源指令集中的二進制指令轉換為目標指令集中的二進位指令的一方塊圖。於例示的實施例中,該指令轉換器是一軟體指令轉換器,但替代地,該指令轉換器可以以軟體、韌體、硬體或其等之各種不同組合來實現。圖17顯示了可以使用x86編譯器1704來編譯一高階語言的程式1702,用以產生x86二進位碼1706,其可以原生地由具有至少一個x86指令集核心的處理器1716所執行。具有至少一個x86指令集核心的該處理器1716代表,實質上能夠執行與具有至少一個x86指令集核心的英特爾處理器相同功能的任何處理器,其可以藉由兼容地執行或以其他方式處理(1)該英特爾x86指令集核心的指令集的大部分或(2)目標為在具有至少一個x86指令集核心的英特爾處理器上運行的應用程式或其他軟體的目的碼版本,以實現與具有至少一個x86指令集核心的英特爾處理器實質相同的結果。該x86編譯器1704表示可操作以產生x86二進位碼1706(例如,目的碼)的編譯器,無論是否有額外的連接處理,該目的碼都可以在具有至少一個x86指令集核心的該處理器1716上執行。類似地,圖17顯示高階語言的程式1702可使用一替代性指令集編譯器1708編譯以產生替代性指令集二進位碼1710,其可以由不具有至少一個x86指令集核心的處理器1714所執行(例如,一處理器,其具有執行加州森尼韋爾的美普思科技的MIPS指令集及/或執行加州森尼韋爾的安謀控股公司的ARM指令集的核心)。該指令轉換器 1712是用於將該x86二進位碼1706轉換為可原生地由不具有x86指令集核心的處理器1714在所執行的程式碼。此轉換後的程式碼不太可能與替代性指令集二進位碼 1710 相同,因為能夠做到這一點的指令轉換器很難製造;然而,該轉換後的程式碼將完成一般操作,並由來自替代指令集的指令組成。因此,該指令轉換器1712表示軟體、韌體、硬體或其等之組合,其通過仿真、模擬或任何其他過程允許不具有x86指令集處理器或核心的一處理器或其他電子設備執行x86二進位碼 1706。
儘管一些實施例已經參照特定實施態樣進行了描述,但是根據一些實施例,其他實施態樣也是可能的。此外,附圖中所例示及/或本文中所述的元件或其他特徵的排列及/或順序,不需要以所例示及所述的特定方式排列。根據一些實施例,許多其他排列是可能的。
圖式中所示的每個系統中,在某些情況下,該等元件可能各自具有相同的元件符號或不同的元件符號,以表明所表示的元件可能不同及/或相似。然而,一元件可有彈性足以具有不同的實施態樣並且與本文所示或敘述的一些或所有系統一起工作。該等圖式中所顯示的各種元件可以相同或不同。哪個被稱為第一元件,哪個被稱為第二元件是任意的。
在說明書和發明申請專利範圍中,該等用語「耦接」和「連接」及其衍生詞會被使用。應當理解的是,這些用語並不旨在作為彼此的同義詞。相反,在特定實施例中,「連接」可用於指示兩個或兩個以上的元件彼此直接實體或電性接觸。「耦接」可意味著兩個或兩個以上的元件處於直接實體接觸或電性接觸。然而,「耦接」也可意味著兩個或兩個以上的元件彼此不直接接觸,但仍彼此協作或相互作用。
實施例是本發明的實施態樣或範例。在說明書中提及「一實施例」、「一個實施例」、「一些實施例」或「其他實施例」意味著,結合這些實施例所敘述的特定特徵、結構或特性至少包括在一些實施例中,但是不一定是本發明的所有實施例。各種出現的「一實施例」、「一個實施例」或「一些實施例」不一定都指相同的實施例。
本文中所敘述和例示的所有組件、特徵、結構、特性等,並非都需要包括在一個或多個特定實施例中。舉例來說,若說明書陳述「可以」、「可能」、「能夠」或「可」包括一組件、特徵、結構或特性,則不需要包括該特定組件、特徵、結構或特性。若說明書或發明申請專利範圍提到「一」或「一個」元件,並不意味著該元件只有一個。若說明書或發明申請專利範圍提及「附加」元件,則不排除存在多於一個的該附加元件。
本發明的經例示之實施例的以上敘述,包括在摘要中描述的內容,並不意在窮舉或將本發明限制為所揭露的精確形式。儘管本文出於例示性目的而敘述了本發明的特定實施例和範例,但如相關領域的技術人員將察知的,在本發明的範圍內可以進行各種等效修改。
可以根據以上詳細描述對本發明進行這些修改。所附發明申請專利範圍中使用的用語不應被解釋為將本發明限制為說明書和附圖中揭露的特定實施例。相反,本發明的範圍將完全由所附發明申請專利範圍來決定,這些發明申請專利範圍將根據發明申請專利範圍解釋的既定原則來解釋。
101:分支目標緩衝區
102:分支預測單元
102:系統記憶體
103:下一指令指標
104:指令轉譯後備緩衝區
110:指令提取單元
111:層級2(L2)快取記憶體
112:層級1(L1)快取記憶體
116:層級3(L3)快取記憶體
120:指令快取記憶體
121:資料快取記憶體
130:解碼器/解碼單元
140:執行單元
150:回寫單元
152:暫存器檔案夾
155:處理器
160,162:加速器
170:互連件
172:記憶體控制器
202:記憶體複製操作
204:壓縮操作
206:解密
208:解壓縮操作
210:濾波
212:其他操作
220:常數偵測操作
310,314:輸入資料塊
312,316:輸出資料塊
320,324:壓縮資料塊
322,326:完成紀錄
340:記憶體階層
342:目錄
344:OS/SW
346:磁碟
360:加速器
362:壓縮電路系統
364:常數偵測電路系統
366:填充電路系統
368:解壓縮電路系統
370:控制器電路系統
402:參考值欄位
404:參考值有效欄位/有效欄位
406:差異值已見欄位/已見欄位
420:表
500,600,700,900:方法
502,504,506,508,510,602,604,606,608,610,612,702,704,706,708,710,902,904, 906,908,910,912,914,918,920,922:方塊
802,804,806,808:資料塊
1010:工件描述符
1020:完成紀錄
1100:處理器管線
1102:提取級
1104:長度解碼級
1106:解碼級
1108:分配級
1110:重命名級
1112:排程級
1114:暫存器讀取/記憶體讀取級
1116:執行級
1118:回寫/記憶體寫入級
1122:例外處置級
1124:提交級
1130:前端硬體
1132:分支預測硬體
1134:指令快取記憶體硬體
1136:指令轉譯後備緩衝區
1138:指令提取硬體
1140:解碼硬體
1150:執行引擎硬體
1152:重命名/分配器硬體
1154:引退硬體
1156:排程器硬體
1158:實體暫存器檔案夾硬體
1160:執行叢集
1162:執行硬體
1164:記憶體存取硬體
1170:記憶體硬體
1172:資料TLB硬體
1174:資料快取記憶體硬體
1176:二階快取記憶體硬體
1190:核心
1200:處理器
1202A-1202N:核心
1204A-1204N:快取記憶體硬體
1206:共享快取記憶體硬體
1208:特定用途邏輯
1210:系統代理
1212:環基互連硬體
1214:整合式記憶體控制器硬體
1216:匯流排控制器硬體
1300:系統
1310,1315:處理器
1320:控制器集線器
1340:記憶體
1345:共處理器
1350:輸入/輸出集線器(IOH)
1360:輸入/輸出(I/O)裝置
1390:圖形記憶體控制器集線器
1395:連接
1400:多處理器系統
1414:I/O裝置
1415:處理器
1416:第一匯流排
1418:匯流排橋接器
1420:第二匯流排
1422:鍵盤/滑鼠
1424:音訊I/O
1427:通訊裝置
1428:儲存器硬體
1430:程式碼和資料
1432,1434:記憶體
1438:共處理器
1439:高效能介面
1450,1452,1454:點對點介面
1470,1480:處理器
1472,1482:整合式記憶體控制器(IMC)/整合式記憶體及I/O控制邏輯(CL)
1476,1478,1486,1488,1494,1498:點對點介面電路
1490:晶片組
1492:介面
1496:介面
1500:系統
1515:傳統I/O裝置
1600:單晶片系統
1602:互連硬體
1610:應用處理器
1620:共處理器
1630:SRAM硬體
1632:DMA硬體
1640:顯示器硬體
1702:高階語言
1704:x86編譯器
1706:x86二進位碼
1708:替代性指令集編譯器
1710:替代性指令集二進位碼
1712:指令轉換器
1714:不具有至少一個x86指令集核心的處理器
1716:具有至少一個x86指令集核心的處理器
藉由參考下面用於例示本發明之實施例的敘述及所附圖式,可以最佳地理解本發明。於該等圖式中:
圖1A為例示本發明的實施例可於其上實施的一示例性處理器的一方塊圖;
圖1B為例示本發明的實施例可於其上實施的另一示例性處理器的一方塊圖;
圖2A例示於一處理器中實施的各種記憶體操作;
圖2B例示與其他記憶體操作有關的一常數偵測操作的實施例;
圖3A例示根據一實施例之與一非常數資料塊的壓縮和解壓縮相關的操作;
圖3B例示根據一實施例之與一常數資料塊的壓縮和解壓縮相關的操作;
圖3C例示根據另一實施例之與一非常數資料塊的壓縮和解壓縮相關的操作;
圖4例示根據一實施例之用於在常數偵測操作的實行期間保留部分狀態的欄位;
圖5為例示根據一實施例之與一資料塊的壓縮及常數偵測相關的操作的一流程圖;
圖6為例示根據一實施例之與一資料塊的壓縮及常數偵測相關的操作的另一流程圖;
圖7為例示依據一實施例之與解壓縮一資料塊相關的操作的一流程圖;
圖8例示根據本發明的實施例之常數與非常數資料塊的範例;
圖9為例示常數偵測操作的一實施例的一流程圖;
圖10例示依據一實施例之工件描述符和完成紀錄的細節;
圖11A為根據本發明之實施例例示,一示例性有序管線及一示例性暫存器重命名、無序發布/執行管線兩者的一方塊圖;
圖11B為根據本發明之實施例例示,將包括於一處理器中的一有序架構核心及一示例性暫存器重命名、無序發布/執行架構核心的一示例性實施例的一方塊圖;
圖12為根據本發明之實施例之具有整合式記憶體控制器及圖形的一單核心處理器及一多核心處理器的一方塊圖;
圖13例示依據本發明之實施例的一系統的方塊圖;
圖14例示依據本發明之實施例的一第二系統的方塊圖;
圖15例示依據本發明之實施例的一第三系統的方塊圖
圖16例示依據本發明之實施例的一單晶片系統(SoC)的方塊圖。
圖17根據本發明之實施例例示,對照使用軟體指令轉換器來將在一來源指令集中之二進位指令轉換為在一目標指令集中之二進位指令之一方塊圖。
310:輸入資料塊
312:輸出資料塊
320:壓縮資料塊
322:完成紀錄
340:記憶體階層
342:目錄
344:作業系統/軟體
346:磁碟
360:加速器
362:壓縮電路系統
364:常數偵測電路系統
366:填充電路系統
368:解壓縮電路系統
370:控制器電路系統
Claims (25)
- 一種設備,其包含: 壓縮電路系統,其用以對一記憶體區塊進行壓縮操作; 常數偵測電路系統,其用以與對該記憶體區塊進行該等壓縮操作同時,判定該記憶體區塊為僅由一常數值的重複實例所組成的一常數資料塊;以及 控制器電路系統,其用以基於該判定而將一第一指示與該記憶體區塊相關聯,其中該第一指示可使用於控制是否中止該等壓縮操作、或是否丟棄從該等壓縮操作所產生的一經壓縮記憶體區塊。
- 如請求項1之設備,其中該控制器電路系統係用以藉由將該第一指示與該記憶體區塊的一記憶體位址相關聯,而將該第一指示與該記憶體區塊相關聯。
- 如請求項1之設備,其進一步包含: 填充電路系統,其用以回應於對該記憶體區塊的一請求,而在該記憶體區塊係與該第一指示相關聯時,使用該常數值來產生該記憶體區塊的一複本。
- 如請求項3之設備,其進一步包含: 解壓縮電路系統,其用以回應於對該記憶體區塊的該請求,而在該記憶體區塊係與該第一指示不相關聯時,藉由解壓縮該經壓縮記憶體區塊來產生該記憶體區塊的該複本。
- 如請求項1之設備,其中該等壓縮操作至少包含用以分析該記憶體區塊以產生壓縮參數之一第一操作、及用以基於該等壓縮參數來產生該記憶體區塊之一第二操作。
- 如請求項5之設備,其中該壓縮電路系統係用以回應於該記憶體區塊為一常數資料塊之判定而中止該第二操作。
- 如請求項1之設備,其進一步包含: 用以儲存該經壓縮記憶體區塊之儲存單元,該儲存單元包含一系統記憶體或一快取記憶體。
- 如請求項1之設備,其中該記憶體區塊包含一記憶體頁面。
- 如請求項1之設備,其中記憶體區塊包含M個位元,該常數值包含N個位元,且該記憶體區塊包含該常數值的M/N次出現。
- 如請求項9之設備,其中N包含8、16、或32中之一者。
- 如請求項1之設備,其中該等壓縮操作係基於一DEFLATE或一Lempel-Ziv-Oberhumber(LZO)壓縮方案來進行。
- 如請求項1之設備,其中判定該記憶體區塊為一常數資料塊進一步包含將該記憶體區塊劃分為複數個較小的記憶體區塊、及判定該等複數個較小的記憶體區塊的各者亦為僅由該常數值的重複實例所組成。
- 如請求項12之設備,其中該常數值係儲存於一狀態結構中,並且與該等複數個較小的記憶體區塊的各者中的值做比較。
- 一種方法,其包含: 對一記憶體區塊進行壓縮操作; 判定該記憶體區塊為僅由一常數值的重複實例所組成的一常數資料塊,其中該判定係與對該記憶體區塊的該等壓縮操作同時進行;以及 基於該判定而將一第一指示與該記憶體區塊相關聯,其中該第一指示可使用於控制是否中止該等壓縮操作、或是否丟棄從該等壓縮操作所產生的一經壓縮記憶體區塊。
- 如請求項14之方法,其中將該第一指示與該記憶體區塊相關聯包含將該第一指示與該記憶體區塊的一記憶體位址相關聯。
- 如請求項14之方法,其進一步包含: 回應於對該記憶體區塊的一請求,而在該記憶體區塊係與該第一指示相關聯時,使用該常數值來產生該記憶體區塊的一複本。
- 如請求項16之方法,其進一步包含: 回應於對該記憶體區塊的該請求,而在該記憶體區塊係與該第一指示不相關聯時,藉由解壓縮該經壓縮記憶體區塊來產生該記憶體區塊的該複本。
- 如請求項14之方法,其中該等壓縮操作至少包含用以分析該記憶體區塊以產生壓縮參數之一第一操作、及用以基於該等壓縮參數來產生該記憶體區塊之一第二操作。
- 如請求項18之方法,其進一步包含: 回應於該記憶體區塊為一常數資料塊之判定而中止該第二操作。
- 如請求項14之方法,其進一步包含: 將該經壓縮記憶體區塊儲存於一儲存單元中,該儲存單元包含一系統記憶體或一快取記憶體。
- 如請求項14之方法,其中該記憶體區塊包含一記憶體頁面。
- 如請求項14之方法,其中記憶體區塊包含M個位元,該常數值包含N個位元,且該記憶體區塊包含該常數值的M/N次出現。
- 如請求項22之方法,其中N包含8、16、或32中之一者。
- 如請求項14之方法,其中該等壓縮操作係基於一DEFLATE或一Lempel-Ziv-Oberhumber(LZO)壓縮方案來進行。
- 如請求項14之方法,其中判定該記憶體區塊為一常數資料塊進一步包含將該記憶體區塊劃分為複數個較小的記憶體區塊、及判定該等複數個較小的記憶體區塊的各者亦為僅由該常數值的重複實例所組成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111138879A TW202416131A (zh) | 2022-10-13 | 2022-10-13 | 用於壓縮操作期間的常數偵測之設備及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111138879A TW202416131A (zh) | 2022-10-13 | 2022-10-13 | 用於壓縮操作期間的常數偵測之設備及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202416131A true TW202416131A (zh) | 2024-04-16 |
Family
ID=91622498
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111138879A TW202416131A (zh) | 2022-10-13 | 2022-10-13 | 用於壓縮操作期間的常數偵測之設備及方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TW202416131A (zh) |
-
2022
- 2022-10-13 TW TW111138879A patent/TW202416131A/zh unknown
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI731893B (zh) | 具有載入索引和預提取聚集操作之處理器、方法及系統 | |
CN107992330B (zh) | 对条件循环进行向量化的处理器、方法、处理系统以及机器可读介质 | |
KR101842058B1 (ko) | 푸싱형 버퍼 복사 및 저장 기능성을 제공하기 위한 명령어 및 논리 | |
JP6143872B2 (ja) | 装置、方法、およびシステム | |
TWI620125B (zh) | 用以控制部分二進制轉譯系統中之轉換的指令及邏輯 | |
JP6761565B2 (ja) | アウトオブオーダーハードウェアソフトウェア協調設計プロセッサにおいてスタック同期命令を用いてプレディケート値のスタックを実装し維持する方法および装置 | |
TWI738682B (zh) | 用於載入索引和散佈元件的處理器、方法及系統 | |
KR101839479B1 (ko) | 더 넓은 레지스터에의 모드 의존형 부분 폭 로드 프로세서들, 방법들, 및 시스템들 | |
CN108028665B (zh) | 用于使用硬件和软件进行压缩的系统、方法和装置 | |
RU2662394C2 (ru) | Инструкция и логика для доступа к памяти в кластерной машине широкого исполнения | |
KR101787851B1 (ko) | 다중 페이지 크기 변환 색인 버퍼(tlb)용 장치 및 방법 | |
US20170286110A1 (en) | Auxiliary Cache for Reducing Instruction Fetch and Decode Bandwidth Requirements | |
CN107077421B (zh) | 用于页表游走改变位的指令和逻辑 | |
TWI729029B (zh) | 用於向量位元欄壓縮及擴展的指令及邏輯 | |
CN114676090A (zh) | 用于低时延页解压缩和压缩加速的电路和方法 | |
CN112559037B (zh) | 一种指令执行方法、单元、装置及系统 | |
US9229874B2 (en) | Apparatus and method for compressing a memory address | |
US8621153B2 (en) | Microcode refactoring and caching | |
US10069512B2 (en) | Systems, methods, and apparatuses for decompression using hardware and software | |
US20220197642A1 (en) | Processor instructions for data compression and decompression | |
TW202416131A (zh) | 用於壓縮操作期間的常數偵測之設備及方法 | |
US20230198548A1 (en) | Apparatus and method for constant detection during compress operations | |
CN114661625A (zh) | 处理器核高速缓存内的推测性解压缩 | |
CN114661227A (zh) | 通过使用忘记存储来增加每核存储器带宽 | |
TW201732549A (zh) | 用於壓縮與旋轉的指令和邏輯 |