TWI729996B - 使用硬體及軟體來解壓縮之系統、方法及裝置 - Google Patents
使用硬體及軟體來解壓縮之系統、方法及裝置 Download PDFInfo
- Publication number
- TWI729996B TWI729996B TW105125465A TW105125465A TWI729996B TW I729996 B TWI729996 B TW I729996B TW 105125465 A TW105125465 A TW 105125465A TW 105125465 A TW105125465 A TW 105125465A TW I729996 B TWI729996 B TW I729996B
- Authority
- TW
- Taiwan
- Prior art keywords
- register
- processor
- output
- string
- record
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3086—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6005—Decoder aspects
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6017—Methods or arrangements to increase the throughput
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本文中所詳述者為使用硬體與軟體以供解壓縮之系統、方法、及裝置的實施例。於硬體中,輸入緩衝器係儲存來自壓縮串之進入的輸入記錄。複數個解碼器解碼來自該輸入緩衝器之至少一輸入記錄並輸出來自已解碼資料之中間記錄,及而該等複數個解碼器之一子集,用以輸出一串文字。最後,再格式化電路將中間記錄格式化成為兩類型符記的其中之一者。
Description
本文中所述之各個實施例係有關解壓縮技術。
Snappy為LZ77家族中之一種演算法,其係廣泛地使用於諸如Hadoop壓縮、BTRFS檔案系統等應用程式中、於諸如指標伺服器等資料中心使用中,且亦被致能於某些瀏覽器中。於這些使用中,解壓縮潛時(decompression latency)對於系統性能是關鍵的。
一種硬體裝置,包含:輸入緩衝器,用以儲存來自壓縮串之進入的輸入記錄,該壓縮串具有針對複製字串的文字位元組和指標;複數個解碼器,各解碼器係用以解碼來自該輸入緩衝器之至少一輸入記錄並輸出來自已解碼資料之中間記錄,及該等複數個解碼器之一子集,用以輸出一串文字;及再格式化電路,用以將中間記錄格式化成為二類型符記的其中之一者,其中,第一類型符記係包含8個非零長度和8個來源指標,而且第二類型符記係包含溢出
位元組、長度、及來源位址。
101‧‧‧處理器核心
103‧‧‧記憶體
105‧‧‧壓縮串
107‧‧‧未壓縮串
109‧‧‧快速和緩慢處理碼
111‧‧‧加速器
113‧‧‧執行單元
211‧‧‧加速器
301‧‧‧輸入分級緩衝器
303‧‧‧選擇器
305‧‧‧解碼器/偏移ALU
311‧‧‧記錄暫存器
313‧‧‧轉換器
315、317‧‧‧基底暫存器
319‧‧‧輸出符記暫存器
321‧‧‧輸出符記累積器
701‧‧‧輸入緩衝器
703‧‧‧解碼器0
705‧‧‧解碼器1
707‧‧‧解碼器N
709‧‧‧選擇器
711‧‧‧中間記錄分級緩衝器
713‧‧‧再格式化電路
715‧‧‧選擇器
717‧‧‧選擇器
719‧‧‧輸出仲裁器
721‧‧‧輸出緩衝器
801-803‧‧‧非零長度
805-807‧‧‧來源指標
809‧‧‧第一位元組
811‧‧‧長度
813‧‧‧指標
1300‧‧‧暫存器架構
1310‧‧‧向量暫存器
1315‧‧‧寫入遮罩暫存器
1325‧‧‧通用暫存器
1345‧‧‧純量浮點堆疊暫存器檔
1350‧‧‧MMX緊縮整數平坦暫存器檔
1400‧‧‧處理器管線
1402‧‧‧提取級
1404‧‧‧長度解碼級
1406‧‧‧解碼級
1408‧‧‧配置級
1410‧‧‧重新命名級
1412‧‧‧排程級
1414‧‧‧暫存器讀取/記憶體讀取級
1416‧‧‧執行級
1418‧‧‧寫入回/記憶體寫入級
1422‧‧‧異常處置級
1424‧‧‧確定級
1430‧‧‧前端單元
1432‧‧‧分支預測單元
1434‧‧‧指令快取單元
1436‧‧‧指令翻譯旁看緩衝器(TLB)
1438‧‧‧指令提取單元
1440‧‧‧解碼單元
1450‧‧‧執行引擎單元
1452‧‧‧重新命名/配置器單元
1454‧‧‧撤回單元
1456‧‧‧排程器單元
1458‧‧‧實體暫存器檔單元
1460‧‧‧執行叢集
1462‧‧‧執行單元
1464‧‧‧記憶體存取單元
1470‧‧‧記憶體單元
1472‧‧‧資料TLB單元
1474‧‧‧資料快取單元
1476‧‧‧第二階(L2)快取單元
1490‧‧‧處理器核心
1500‧‧‧指令解碼器
1502‧‧‧晶粒上互連網路
1504‧‧‧第二階(L2)快取記憶體
1506‧‧‧L1快取記憶體
1506A‧‧‧L1資料快取記憶體
1508‧‧‧純量單元
1510‧‧‧向量單元
1512‧‧‧純量暫存器
1514‧‧‧向量暫存器
1520‧‧‧拌合單元
1522A-B‧‧‧數字轉換單元
1524‧‧‧複製單元
1526‧‧‧寫入遮罩暫存器
1528‧‧‧16寬的ALU
1600‧‧‧處理器
1602A-N‧‧‧核心
1606‧‧‧共享快取單元
1608‧‧‧特殊用途邏輯
1610‧‧‧系統代理
1612‧‧‧以環狀為基礎的互連單元
1614‧‧‧集成記憶體控制器單元
1616‧‧‧匯流排控制器單元
1700‧‧‧系統
1710、1715‧‧‧處理器
1720‧‧‧控制器集線器
1740‧‧‧記憶體
1745‧‧‧協同處理器
1750‧‧‧輸入/輸出集線器(IOH)
1760‧‧‧輸入/輸出(I/O)裝置
1790‧‧‧圖形記憶體控制器集線器(GMCH)
1795‧‧‧連接
1800‧‧‧多處理器系統
1814‧‧‧I/O裝置
1815‧‧‧額外處理器
1816‧‧‧第一匯流排
1818‧‧‧匯流排橋接器
1820‧‧‧第二匯流排
1822‧‧‧鍵盤及/或滑鼠
1824‧‧‧音頻I/O
1827‧‧‧通訊裝置
1828‧‧‧儲存單元
1830‧‧‧指令/碼及資料
1832‧‧‧記憶體
1834‧‧‧記憶體
1838‧‧‧協同處理器
1839‧‧‧高性能介面
1850‧‧‧點對點互連
1852、1854‧‧‧P-P介面
1870‧‧‧第一處理器
1872、1882‧‧‧集成記憶體控制器(IMC)單元
1876、1878‧‧‧點對點(P-P)介面
1880‧‧‧第二處理器
1886、1888‧‧‧P-P介面
1890‧‧‧晶片組
1894、1898‧‧‧點對點介面電路
1896‧‧‧介面
1900‧‧‧系統
1914‧‧‧I/O裝置
1915‧‧‧舊有I/O裝置
2000‧‧‧SoC
2002‧‧‧互連單元
2010‧‧‧應用程式處理器
2020‧‧‧協同處理器
2030‧‧‧靜態隨機存取記憶體(SRAM)單元
2032‧‧‧直接記憶體存取(DMA)單元
2040‧‧‧顯示單元
2102‧‧‧高階語言
2104‧‧‧x86編譯器
2106‧‧‧x86二元碼
2108‧‧‧指令集編譯器
2110‧‧‧指令集二元碼
2112‧‧‧指令轉換器
2114‧‧‧沒有至少一x86指令集核心之處理器
2116‧‧‧具有至少一x86指令集核心之處理器
本發明係藉由後附圖形之圖中的範例(而非限制)來繪示,其中,相似的參考符號表示類似的元件,且其中:圖1繪示用於加速解壓縮之系統的實施例。
圖2繪示用於加速解壓縮之系統的實施例。
圖3繪示硬體加速器之實施例。
圖4繪示從加速器所輸出之符記格式以及符記的實施例。
圖5繪示解壓縮方法之實施例。
圖6繪示快速路徑碼之範例。
圖7繪示異質硬體解壓縮器之實施例。
圖8繪示快速及緩慢路徑符記格式之實施例。
圖9繪示於支援第二符記類型之處理器上的快速路徑處理流程之實施例。
圖10-12繪示針對不同類型的壓縮演算法之中間格式中所指明的偏移及長度。
圖13為依據本發明之一個實施例的暫存器架構之方塊圖。
圖14A為依據本發明之實施例,繪示範例依序管線及範例暫存器重新命名、失序問題/執行管線兩者之方塊圖。
圖14B為方塊圖,其繪示將包括於依據本發明之實施例的處理器中之依序架構核心之範例實施例及範例暫存器重新命名、失序問題/執行架構核心兩者。
圖15A-B繪示更特定的範例依序核心架構之方塊圖,
該核心將為晶片中之數個邏輯區塊的其中之一(包括相同類型及/或不同類型之其他核心)。
圖16為依據本發明實施例,一種處理器1600之方塊圖,該處理器1600可具有一個以上的核心、可具有集成記憶體控制器、且可具有集成圖形。
圖17-20為範例電腦架構之方塊圖。
圖21為依據本發明之實施例,一種對照軟體指令轉換器之使用的方塊圖,該轉換器係用以將來源指令集中之二元指令轉換至目標指令集中之二元指令。
於以下說明中,提出了許多特定細節。然而,應理解:本發明之實施例可被實行而沒有這些特定細節。說明書中對於「一個實施例」、「一實施例」、「一範例實施例」等等之參照係指示所述之實施例可包括特定的特徵、結構、或特性,但每一個實施例可能不一定包括該特定的特徵、結構、或特性。此外,此等用詞不一定指相同的實施例。再者,當特定的特徵、結構、或特性配合實施例而被說明時,係認為其落入熟悉此項技術人士之知識範圍內,以影響配合其他實施例(無論是否被明確地說明)之此等特徵、結構、或特性。
以下詳述用以加速解壓縮(例如,以LZ77為基礎的壓縮演算法)之實施例,使用介於固定功能的硬體與軟體間之計算的有效且新穎的分割。以下之許多實施例係討論LZ77「Snappy」演算法,但同等地極適於其根據(類似)編碼格式之此家族(例如,LZF、LZ4)中的其他壓縮技術。通常,LZ77壓縮演算法找出重複子字串並以向後參
考(相對距離偏移)來取代之。壓縮資料係由兩種類型的一連串元件所組成:針對複製字串之文字位元組及指標,其中,指標被表示為一對<長度,向後距離偏移>。
Snappy格式係由其代表一輪文字位元組、或參考之符號所組成。編碼係以標籤或控制位元組開始,該標籤或控制位元組含有關於符號之類型、文字或參考之長度、以及距離偏移之某些位元的資訊。標籤位元組係以文字、或者1或2距離偏移位元組接續。於大的歷史(history)緩衝器或極長的文字字串之某些(稀有)情況下,存在有額外的位元組。
解壓縮程序係由兩個主要步驟所組成:1)將輸入串剖析為符記(文字或LZ77副本)及2)將指定數目的位元組複製至輸出串。用以實施LZ77解壓縮之目前軟體方法係由以下因素所限制:不良的條件式資料依存分支、載入潛時及數個影響解碼符號之關鍵路徑的指令。因為解壓縮為串列程序,所以關鍵路徑通常有關於可以多快速地解決並開始處理下一符號。
於以下所討論之實施例中,上述第一步驟被施行於固定功能硬體中而第二步驟係由傳統處理器上之軟體來完成。以下的焦點在於LZ77解壓縮之關鍵部分並將問題有效地分離為僅用於前端剖析之固定功能的硬體、與用於資料副本的軟體之間。藉由去除低信賴資料依存的分支(其具有少數指令於關鍵迴路中)、及去除目前軟體關鍵路徑以到達下一個符號解碼(藉由定義固定長度符記),以定義對軟體施行極友善的一中間符記串。
後處理軟體計算被分離為快速與緩慢路徑,並確保快速路徑在傳統核心上達成最快速度。圖1繪示用於加速解壓縮之系統的實施例。於記憶體103(諸如,隨機存取記憶體(RAM)之揮發性記憶體或諸如碟片之非揮發性儲存器)中,壓縮LZ77串105、未壓縮LZ77串107、及快速和緩慢處理碼109被儲存。壓縮串105為進入加速器111(包含LZ77編碼檔)之輸入。未壓縮串107為加速器111及執行單元113之輸出。通常,此串包括已被解碼者之歷史。用以處理該串以指導加速器111和執行單元113兩者之碼被儲存於快速和緩慢處理碼109中。此碼之範例被顯示於圖6中以利後續討論。
加速器111產生固定長度(例如,5個位元組)符記,其代表來自歷史/輸出緩衝器之副本或來自輸入串(亦即,一組文字)之副本。以下有時候,加速器111可被稱為前端硬體。加速器111讀入LZ77串(壓縮)並輸出為固定長度格式之一串符記(亦即,不包括文字資料)。處理器核心101之執行單元113用作為後端,並使用符記、原始串、及輸出串(歷史)以產生已解碼輸出。
圖2繪示用於加速解壓縮之系統的實施例。於此範例中,組件係相同於先前的圖之元件,然而,加速器211係位於處理器核心101外部。
加速器輸出係由一串固定長度(5個位元組)符記所組成。大部分時間,LZ77記錄將產生單一符記。於稀有情況下,記錄將產生兩個符記,其係由處理器碼中之異常情況「緩慢路徑」所處置。符記串提供兩個偏移,其係由處理器碼使用為針對記憶體複製操作之來源及目的地基底
暫存器的偏移。相反於使該碼於疊代中之各步驟遞增位址,硬體加速器提供針對軟體之基底位址的漸增偏移。於某時點,當偏移變得太大時,更新符記被傳送以遞增處理器碼中之基底暫存器。這些更新事件是不常見的且不會顯著地影響中間串之性能或大小;另一方面其係增進該碼之各疊代的性能,因為其為緊的/小的迴路。
圖3繪示硬體加速器之實施例。例如,加速器111或211。於所示之範例中,有兩個各為8個位元組大小之輸入分級(staging)緩衝器301。這些輸入緩衝器301接收壓縮資料(諸如,Snappy壓縮資料)。當然,其他緩衝器大小可被使用。緩衝器301係根據由解碼器305所提供的指標而被推進。
選擇器303根據在解碼串中之目前指標而從輸入緩衝器選擇至少一位元組。於一實施例中,選擇器303為8:1多工器,其係從緩衝器301中選擇高達5個位元組。
解碼器/偏移ALU 305解碼經選定的位元組以判定數片資料,包括以下之一或更多者:解碼資料是否為文字、符號、造成重疊狀況(其中,輸入與輸出串重疊)、LZ77記錄之大小(將被用於來源與目的地基底暫存器之更新同步)、文字或符號之長度、及針對文字或符號之偏移。解碼器305亦判定下一個指標,用以沿著緩衝器301移動並將由選擇器303所使用。在某些實施例中,解碼器之輸出被儲存於LZ77記錄暫存器311中。
LZ77至符記轉換器313利用解碼器305(及暫存器
311)之輸出以產生包括某些解碼資料之固定長度符記(例如,5個位元組)。轉換器313亦採用並更新基底暫存器315和317中所儲存的相對來源和目的地偏移。
輸出符記暫存器319儲存符記直到輸出符記累積器321準備好將其送出為止。
圖4繪示從加速器所輸出之符記格式以及符記的實施例。401繪示全部格式,其包括針對來源偏移、文字、更新、長、重疊、長度、及目的地偏移之欄位。範例大小及位元位置被顯示,然而,不同的大小或布局可被使用。此外,針對長度之欄位(「len/16」)為16個位元組區塊之長度,且於某些實施例中為「floor((len-1)/16)」,如其應有至少一區塊(除非在緩慢路徑上)。
目的地/輸出位址被指明為來自基底指標(其中,以「更新」記錄來週期性地更新基底指標)之目的地偏移(「dst_offset」)。此表示:除了在其中一副本之輸出為下一個記錄之副本的輸入之情況以外,沒有依存性於疊代之間。
於大部分實施例中,將被複製之項目的長度被提供無條件進位(rounded up)至16個位元組。此致能以處理器碼之快速簡單的副本,取代緩慢之位元組接著位元組的副本。然而,於LZ77中,可具有來自其太接近目前指標之距離的重疊副本,其將需要更慢的副本。加速器檢測這些情況並設定「重疊」位元旗標。針對LZ77(諸如,Snappy)編碼中之文字的長度可高達232(4GB),但大
部分時間其將係<61個位元組。針對符號之長度被限制於64(亦即,<=64),但向後的距離可如歷史窗一般大。
於所示之範例中,所有副本被表示為16個位元組之倍數,然而,其他大小可被使用於某些實施例中。目的地位址將僅前進以參考/文字-輪之長度,但通常有效率的是複製較大的固定塊(fixed chunk),因為其較可變的位元組接著位元組的副本更快速。
來源偏移(「src_offset」)為有符號的值。針對文字,其通常將是正值(關於指向原始輸入串之位址暫存器)。針對符號,其一開始將是關於輸出指標之負值(亦即,指向輸出串之位址暫存器),但是隨著輸出被寫入(未改變輸出指標),其可變為正值。
更新指示其輸入和輸出位址將由一差量(delta)所更新,此使來源與資料指標同步化且通常為要添加之大的量。文字指示正被處理中者為文字或者符號。長指示是否有其應為稀少之大的、非可壓縮的資料且需要緩慢路徑。
403繪示針對符號之符記的範例,其中,來源偏移係關於輸出位址。此表示複製關於輸出指標之符號。
405繪示針對符號之符記的範例,其中,來源偏移係關於輸出位址(其中,複製輸出重疊該輸入)。
407繪示針對文字之符記的範例,其中,來源偏移係關於原始壓縮串緩衝器之輸入位址。此表示從緩衝器複製文字。
409繪示一範例,其中,來源和目的地偏移之更新將
被執行以及那些更新之差量。
411繪示一指示長文字之符記的範例,其中,文字串之長度是極大的。有兩個與此相關的問題。第一個問題是其長度/16溢流7個位元,因此需要更大長度的欄位(資料之不可壓縮量)。在開始複製操作時,偏移欄位(連同其相關的基底暫存器)是適當大的。第二個問題是其在複製操作後,輸出指標已前進一「大」量(亦即,其可能顯著地大於可由一般「更新」操作所遞增的量)。類似地,進入原始輸入串之基底指標亦將已前進一「大」量。為了處理此問題,在複製操作完成後,有一個大的值其將被加至這些基底指標兩者(隱含的大更新)。
於長文字的情況下,其大小是給定的(不是大小/16)。此判定將複製之資料的量,且亦為將被加至輸入及輸出基底暫存器之值。於某些實施例中,具有17個位元的輸入偏移及8個位元的長度欄位。於某些實施例中,符記之固定長度被界定為8個位元組。
413指示長符號,其中,來源偏移無法被表示以欄位之寬度,即使在更新以後。
圖5繪示解壓縮方法之實施例。此方法係配合上述加速器而工作並損耗該加速器之輸出。
於501,記錄被載入自解碼串。例如,記錄被載入自諸如Snappy串之LZ77串。於503第一數量的位元組被加至針對解碼串之載入記錄指標。例如,5個位元組被加至載入記錄之指標。這些步驟容許記錄被載入自解碼串。
於505,針對來源偏移之有符號的值被產生。
緩慢路徑(未使用硬體加速器)是否將被使用之判定被執行於507。此判定係使用從硬體加速器所輸出之符記以判定是否存在不容許硬體加速器之有效使用的狀況。例如,是否有長、更新、或重疊狀況。假如有,則緩慢路徑被使用於509,但此應為稀有情況。
假如沒有此一狀況,則於511做出解碼資料是否為文字的判定。此資訊來自由硬體加速器所供應之符記。假如其為文字,則於513針對該資料之來源指標使用基底暫存器,其係儲存為與壓縮(原始)串相關的基底指標。基底指標被加至有符號的來源偏移以產生載入位址。假如其不是文字,則於515來源指標為與解壓縮輸出相關的基底指標加上進入解壓縮(輸出)串之有符號的來源偏移。注意:這些基底暫存器係出現於加速器或處理器核心任一者中。
於517,來自解壓縮或壓縮串之資料係根據於517之來源指標而被載入。載入資料被儲存為大塊,例如,16個位元組,於519。此方法重複直到壓縮串已被處理為止。
圖6繪示快速路徑碼之範例。迴路針對每一個符號而被施行。前兩個指令(mov及add)從解碼串載入記錄。接下來三個指令提供有符號的值給來源偏移。接下來兩個指令測試符記中所包括的狀況。假如有防止快速路徑為有效的問題(長、更新、或重疊設為1),則跳至緩慢路
徑。接下來三個指令(mov、test、及cmovnz)潛在地切換來源指標。Vmovdqu為載入,而接續於迴路之末端的指令被用以儲存16個位元組的副本。
以上詳述者為前端,其產生固定長度(5個位元組)符記,代表:從歷史/輸出緩衝器複製N個位元組以及從輸入串(亦即,一組文字)複製N個位元組。此致能處理器碼成為無分支且僅使用移動指令以載入用於複製之來源指標。
不幸地,此並非針對所有壓縮演算法總是理想的。例如,於位元組取向的格式中,其並未編碼一組文字,而是編碼針對各位置之僅單一文字位元組,其中,並未發現其可能少於理想的匹配。鑑於簡單固定5個位元組的符記可代表單一文字,將產生每文字1個符記,其可造成中間符記串中之大膨脹以及處理器上之後處理運作時間的相應增加。此外,任何位元取向的格式(諸如,Deflate或LZS),其中,文字並非於位元組邊界上,但反之於位元組中之某任意位元偏移上開始的某組n個位元(並可因此跨立(straddle)位元組)會造成問題。再次,假如代表相連文字之位元被散佈於位元串中的話,則位元取向的格式是甚至更有問題的。亦注意:於Deflate中,文字被霍夫曼編碼且因此無法看見。
以下詳述者為用以處置這些其他格式之系統、裝置、
及方法的實施例。附屬輸出串係由硬體解壓縮器(除了符記串之外)所產生。基本上,硬體亦剖析出其可能被編碼為壓縮位元串中之任意位置上的位元之文字,並將文字位元組寫出為相連文字串。
硬體輸出被定義以完全相同的方式,無論其解壓縮何種格式。符記串格式將是完全相同的,且Deflate將僅具有所產生的額外文字位元組串(而Snappy將不會)。
除了以上詳述的格式之外,定義從解壓縮硬體至處理器之第二格式,其係針對某些能夠SIMD的處理器而被最佳化。當以上所定義的格式僅需要具有良好性能之簡單整數指令時;則更有能力的處理器可以不同的格式獲得更大的加速。
圖7繪示異質硬體解壓縮器之實施例。此解壓縮器可被使用為諸如那些圖1及2中所討論之加速器。輸入緩衝器701接收壓縮資料串以傳遞至一或更多個解碼器(解碼器0 703、解碼器1 705、及解碼器N 707)。這些解碼器(或剖析器)利用該輸入資料串並產生中間記錄(或符記)及/或文字串。
Snappy及LZ4解碼器(解碼器N 707)僅產生單一輸出(中間記錄,其接著被處理以形成符記串),而用於Deflate(解碼器703)及LZS(解碼器705)之解碼器具有額外輸出(位元組對準文字串)。
這些前端解碼器係處理來自壓縮串之輸入記錄,將其轉化為中間記錄,其被接著再格式化成為最後符記串。根
據所欲組態,兩不同類型的符記輸出的其中之一可被產生給某些能夠SIMD的處理器。根據特定的解壓縮演算法,輸入記錄可產生單一輸出符記或多個輸出符記。
解壓縮器各產生一中間記錄,其被再格式化成數個最後輸出格式(例如,於某些實施例中為兩個,如文中所詳述者)。中間記錄係傳遞有關一組文字位元組、或參考之資訊。一個輸入記錄可導致剛好一個中間記錄(例如,解碼Snappy之正常操作)。然而,一個輸入記錄可產生數個中間記錄(例如,Snappy格式之極大儲存區塊的文字)。類似地,針對解碼諸如Deflate等格式之效率,因為各文字將為一個輸入記錄,所以解碼器可將一組這些集束在一起以產生單一中間記錄(針對N個文字)。中間記錄通常將含有諸如輸入串中之目前記錄的開始/結束等資訊,無論該輸入串是否將被用於特殊文字串以供於軟體中提取文字,等等,以致解壓縮器硬體可知道該輸入串正如何前進、該文字串正如何前進、及該輸出串正如何前進。以及於所有情況下,參考將被表示以長度/距離-偏移。
圖10-12描述針對不同類型的壓縮演算法之中間格式中所指明的偏移及長度。圖10顯示位元組對準的單一記錄,諸如Snappy或LZE中所見者。各「輸入記錄」含有剛好一個記錄,不論針對文字或向後參考。同時,文字位元組為隨時可取得於壓縮串中之位元組對準位置中。圖11顯示針對專屬文字串之單一記錄,諸如LZS、LZSS、及DEFLATE中所見者。各「輸入記錄」含有剛好一個記
錄,不論針對文字或向後參考。然而,文字並非隨時可取得於壓縮串中之位元組對準位置(例如,LZS、LZSS)中,及/或文字僅為不可取得(例如,Deflate)。圖12顯示位元組對準的單一記錄,諸如LZRW、LZ4、及LZJB中所見者。各「輸入記錄」為一含有多個記錄之群組,而文字位元組為隨時可取得於壓縮串中之位元組對準位置中。於每一個壓縮演算法中,文字來自壓縮串。
選擇器709被用來從解碼器選擇於中間記錄之間,其被接著緩衝於中間記錄分級緩衝器711中。記錄再格式化電路713將中間記錄組合為單一輸出符記。於某些格式中,輸入記錄可被指明於群組中。某些演算法限制針對各記錄之文字的長度,實際上針對Deflate僅一個位元組。於此等情況下,壓縮串可潛在地具有連續文字類型記錄。取代輸出一個位元組文字之多個輸出符記,再格式化電路713將多個文字記錄合併為一個輸出記錄。於某些實施例中,8個連續中間記錄被緩衝於緩衝器711中,而記錄再格式化電路檢查來自一參考記錄與一跨立緩衝記錄之短偏移的任何依存性,並發出一完整SIMD符記(針對快速路徑)或單一符記(針對緩慢路徑)。這些符記被詳述如下。
選擇器715於文字輸出(715)之間選擇並提呈選定的文字至選擇器717,其係於記錄再格式化電路713的輸出與根據來自輸出仲裁器719之輸入的文字之間選擇。輸出緩衝器721保留選定的文字及符記以供進一步處理。
如同以上所暗示者,於某些實施例中,有兩個輸出符記串格式。第一格式為固定40個位元的符記,其被設計以供任何處理器上之有效處理,使用僅簡單的整數指令且被詳述如上。第二符記串格式亦可被產生以利用某些SIMD處理器。於某些實施例中,符記之格式化係由記錄再格式化電路713所施行。
於某些實施例中,解壓縮器將最近的8個文字或參考符記緩衝,並檢查是否有任何相互依存性。相互依存性具有極低的可能性,因為各符記係產生平均~5個輸出位元組,而此窗內之依存性係暗示參考具有距離偏移<5*8=40。因此,假設無依存性,則同時8個符記之處理可使用四字元道(lane)來完成。
第二格式具有快速及緩慢路徑(針對最近8個符記內之依存性的稀有情況)。圖8繪示快速及緩慢路徑符記格式之實施例。於快速路徑格式中,複數個非零長度801至803及來源指標805至807被提供。通常,8個「長度」為各大小為8位元且表示為位元位置(假設於範圍1至8中的長度)。此為基本上將用於向量壓縮之遮罩。換言之,長度說明有多少資料之位元組將被複製。8個四字元(64位元)指標被用於四字元收集並提供針對文字或參考副本之來源位址。
緩慢路徑係使用第一位元組809中之0為溢出位元組。長度811可高達255。針對該副本之來源位址被提供於指標813中。
圖9繪示於一支援第二符記類型之處理器上的快速路徑處理流程之實施例。特別地,處理器係用以處理最近文字或參考符記(諸如,8個符記),其係以如圖8中所示之第二格式。於某些實施例中,判定是否將使用快速處理路徑或緩慢路徑。此係藉由檢查第二格式之一組已接收符記的第一位元組以觀察其是否為零來完成。當其為零時,則使用緩慢路徑,否則便使用快速路徑,如文中所詳述者。
於901,第一暫存器被載入以來自第一路徑格式之長度。於某些實施例中,此為前面8個符記,其被顯示為圖8中之長度。通常,此暫存器為64位元的通用暫存器,然而,亦可使用其他的暫存器大小及類型。
於903,第二暫存器被載入以已接收符記之來源指標。觀察8,這些為指標805-07。通常,第二暫存器為512位元緊縮資料(或向量)暫存器。該些指標為「收集」指標,其提供針對輸入串之文字或參考副本的位址。
於905,第三暫存器被載入以資料,其中,該資料被發現於第二暫存器之指標的位置上。通常,8個位元組係從各位置被載入於512位元的緊縮資料(或向量)暫存器中。
於某些實施例中,於907,特殊寫入遮罩暫存器(例如,k遮罩)被設以第一暫存器之64位元。如此設定應從第三暫存器抓取何者的遮罩。
使用第一或寫入遮罩暫存器的其中之一為遮罩的第三
暫存器中之資料的壓縮被執行於909。此係壓縮何者為「良好」之第三暫存器的資料。其結果被儲存至輸出指標,於911。
於某些實施例中,輸出指標被設為第一暫存器中之數個有效位元(那些被設為1者)加上911之輸出指標值。輸出指標被推進以所寫入之該些數個有效位元組(藉由SIMD壓縮操作)。後續參考中所使用之任何偏移將需要從已更新輸出指標向後工作。此外,於某些實施例中,於915,符記之符記群組被向上佇列以供處理。
於虛擬碼中,依據實施例之於處理器上的快速路徑流程為:假如(符記[0]!=0){
載入64位元暫存器RK=符記[7:0]
載入具有接下來64個位元組(代表8個收集指標)之ZMM1暫存器
收集每符記8個位元組,針對進入ZMM2之8個符記(使用8個位址)
設定k個暫存器,使用其從RK移動64個位元之KMOVQ
以上述k遮罩V壓縮b於ZMM2中之收集資料上
儲存結果至輸出指標(注意,規律未對準儲存,非散佈)
輸出-指標+=popcnt(RK);符記+=72;}
以上容許多種廣泛應用中所使用之無損壓縮,且許多大實體(例如,資料庫、儲存及網路應用)對加速壓縮/解壓縮越來越有興趣,因為其為非常計算密集的。針對該快速解壓縮之數個大市場用途包括網路伺服器、於壓縮檔系統中之輸入/輸出最佳化、及Hadoop中之Snappy壓縮/解壓縮。
於某些實施例中,完全相同的後處理軟體常式可被用以處置一產生額外文字串之格式、以及一並未產生者的似乎相異情況。當有額外文字串時,通至軟體常式之一輸入為由硬體所產生之文字串的指標(如以上所詳述者),而於後者情況下,軟體經由一指標而被傳遞至原始壓縮串。注意:額外串係由解碼器0 703及解碼器1 705(例如,DEFLATE及LZS)所產生並顯示於圖11中。
以下係詳述其可利用上述實施例之範例核心架構、處理器、及架構。
寫入遮罩暫存器1315-於所示之實施例中,有8個寫入遮罩暫存器(k0至k7),大小各為64個位元。於替代實施例中,寫入遮罩暫存器1315之大小為16個位元。如先前所述,於本發明之一實施例中,向量遮罩暫存器k0無法被使用作寫入遮罩;當其通常將指示k0之編碼被用於寫入遮罩時,其係選擇0xFFFF之固線寫入遮罩,有效地除能針對該指令之寫入遮罩。
通用暫存器1325-於所示之實施例中,有十六個64位元的通用暫存器,其係連同現存的x86定址模式來用以定
址記憶體運算元。這些暫存器被參照以RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15之名稱。
純量浮點堆疊暫存器檔(x87堆疊)1345,MMX緊縮整數平坦暫存器檔1350係別名於其上-於所示之實施例中,x87堆疊為用以使用x87指令集擴充而在32/64/80位元的浮點資料上施行純量浮點操作之八個元件的堆疊;而MMX暫存器被用以施行操作在64位元的緊縮整數資料上、及用以保持運算元以供介於MMX與XMM暫存器間所施行的某些操作。
本發明之替代實施例可使用較寬或較窄的暫存器。此外,本發明之替代實施例可使用更多、更少、或不同的暫存器檔及暫存器。
處理器核心可被實施以不同方式、用於不同目的、以及於不同處理器中。例如,此類核心之實施方式可包括:1)用於通用計算之通用依序核心;2)用於通用計算之高性能通用失序核心;3)主要用於圖形及/或科學(通量)計算之特殊用途核心。不同處理器之實施方式可包括:1)CPU,其包括用於通用計算之一或更多個通用依序核心及/或用於通用計算之一或更多個通用失序核心;及2)協同處理器,其包括主要用於圖形及/或科學(通量)之一或更多個特殊用途核心。此等不同處理器導致不同的電腦系統架構,其可包括:1)在與CPU所在晶片分離的晶片上的協同處理器;2)在與CPU所在同一封裝組件中之
分離晶粒上的協同處理器;3)在與CPU所在同一晶粒上的協同處理器(於該情況下,此一類協同處理器有時被稱為特殊用途邏輯,諸如集成圖形及/或科學(通量)邏輯、或稱為特殊用途核心);及4)在同一晶粒上可包括所述CPU(有時稱為應用程式核心或應用程式處理器)、上述協同處理器、及額外功能的晶片上之系統。範例核心架構被描述於下,接續其為範例處理器及電腦架構之描述。
圖14A為依據本發明之實施例繪示範例依序管線及範例暫存器重新命名、失序問題/執行管線兩者之方塊圖。圖14B為方塊圖,其繪示將包括於依據本發明之實施例的處理器中之依序架構核心之範例實施例及範例暫存器重新命名、失序問題/執行架構核心兩者。圖14A-B中之實線方框係繪示依序管線及依序核心,而虛線方框之選擇性加入係繪示暫存器重新命名、失序問題/執行管線及核心。假設其依序形態為失序形態之子集,故將描述失序形態。
於圖14A中,處理器管線1400包括提取級1402、長度解碼級1404、解碼級1406、配置級1408、重新命名級1410、排程(亦已知為分派或發送)級1412、暫存器讀取/記憶體讀取級1414、執行級1416、寫入回/記憶體寫入級1418、異常處置級1422、及確定級1424。
圖14B顯示處理器核心1490,其包括耦合至執行單元引擎單元1450之前端單元1430,且兩者均被耦合至記憶體單元1470。核心1490可為減少指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字元(VLIW)核心、或者併合或替代核心類型。當作又另一種選擇,核心1490可為特殊用途核心,諸如(例如)網路或通訊核心、壓縮引擎、協同處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心,等等。
前端單元1430包括分支預測單元1432,其係耦合至指令快取單元1434,其係耦合至指令變換後備緩衝(TLB)1436,其係耦合至指令提取單元1438,其係耦合至解碼單元1440。解碼單元1440(或解碼器)可解碼指令;並可將以下產生為輸出:一或更多個微操作、微碼進入點、微指令、其他指令、或其他控制信號,其被解碼自(或者反應)、或被衍生自原始指令。解碼單元1440可使用各種不同的機制來實施。適當機制之範例包括(但不限定於)查找表、硬體實施方式、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM),等等。於一實施例中,核心1490包括微碼ROM或者儲存用於某些巨指令之微碼的其他媒體(例如,於解碼單元1440中或者另外於前端單元1430內)。解碼單元1440被耦合至執行引擎單元1450中之重新命名/配置器單元1452。
執行引擎單元1450包括重新命名/配置器單元1452,其係耦合至撤回單元1454及一組一或更多個排程器單元
1456。排程器單元1456代表任何數量的不同排程器,包括保留站、中央指令窗,等等。排程器單元1456被耦合至實體暫存器檔單元1458。實體暫存器檔單元1458之各者代表一或更多個實體暫存器檔,其不同者係儲存一或更多個不同的資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,其為下一待執行指令之位址的指令指標),等等。於一實施例中,實體暫存器檔單元1458包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔單元1458係由撤回單元1454所重疊以繪示其中暫存器重新命名及失序執行可被實施之各種方式(例如,使用重排序緩衝器和撤回暫存器檔;使用未來檔、歷史緩衝器、和撤回暫存器檔;使用暫存器映圖和暫存器池,等等)。撤回單元1454及實體暫存器檔單元1458被耦合至執行叢集1460。執行叢集1460包括一組一或更多個執行單元1462及一組一或更多個記憶體存取單元1464。執行單元1462可施行各種操作(例如,偏移、相加、相減、相乘)以及於各種類型的資料上(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。雖然某些實施例可包括數個專屬於特定功能或功能集之執行單元,但其他實施例可包括僅一個執行單元或者全部施行所有功能之多個執行單元。排程器單元1456、實體暫存器檔單元1458、及執行叢集1460被顯示為可能複數的,
因為某些實施例係針對某些類型的資料/操作產生分離的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線,其各具有其本身的排程器單元、實體暫存器檔單元、及/或執行叢集-且於分離記憶體存取管線之情況下,某些實施例被實施於其中僅有此管線之執行叢集具有記憶體存取單元1464)。亦應理解:當使用分離管線時,這些管線之一或更多者可為失序發送/執行而剩餘者為依序。
該組記憶體存取單元1464被耦合至記憶體單元1470,其包括資料TLB單元1472,其耦合至資料快取單元1474,其耦合至第二階(L2)快取單元1476。於一範例實施例中,記憶體存取單元1464可包括載入單元、儲存位址單元、及儲存資料單元,其各者係耦合至記憶體單元1470中之資料TLB單元1472。指令快取單元1434被進一步耦合至記憶體單元1470中之第二階(L2)快取單元1476。L2快取單元1476被耦合至一或更多個其他階的快取記憶體且最終至主記憶體。
舉例而言,範例暫存器重新命名、失序發送/執行核心架構可實施管線1400如下:1)指令提取1438施行提取和長度解碼級1402和1404;2)解碼單元1440施行解碼級1406;3)重新命名/配置器單元1452施行配置級1408和重新命名級1410;4)排程器單元1456施行排程級1412;5)實體暫存器檔單元1458和記憶體單元1470施行暫存器讀取/記憶體讀取級1414;執行叢集1460施行
執行級1416;6)記憶體單元1470和實體暫存器檔單元1458施行寫入回/記憶體寫入級1418;7)各個單元可涉及異常處置級1422;及8)撤回單元1454和實體暫存器檔單元1458施行確定級1424。
核心1490可支援一或更多個指令集(例如,x86指令集,具有其已被加入以較新版本之某些擴充);MIPS Technologies of Sunnyvale,CA之MIPS指令集;ARM Holdings of Sunnyvale,CA之ARM指令集(具有諸如NEON之選擇性額外擴充),包括文中所述之指令。於一實施例中,核心1490包括支援緊縮資料指令集擴充(例如,AVX1、AVX2)之邏輯,藉此容許由許多多媒體應用程式所使用的操作使用緊縮資料來施行。
應理解:核心可支援多線程(執行二或更多個平行組的操作或線緒),並可以多種方式來執行此操作,包括時間切割多線程、同時多線程(其中,單一實體核心提供邏輯核心給其實體核心正同時地多線程之每一個線緒)、或者其組合(例如,時間切割提取和解碼以及之後的同時多個線程,諸如Intel® Hyperthreading科技)。
雖然暫存器重新命名被描述於失序執行之背景,但應理解其暫存器重新命名可被使用於依序架構中。雖然處理器之所述的實施例亦包括分離的指令和資料快取單元1434/1474以及共享L2快取單元1476,但替代實施例可具有針對指令和資料兩者之單一內部快取記憶體,諸如(例如)第一階(L1)內部快取記憶體、或多階內部快取
記憶體。於某些實施例中,該系統可包括內部快取記憶體與外部快取記憶體之組合,該外部快取記憶體是位於核心及/或處理器之外部。替代地,所有的快取記憶體可於核心及/或處理器之外部。
圖15A-B繪示更特定的範例依序核心架構之方塊圖,該核心將為晶片中之數個邏輯區塊的其中之一(包括相同類型及/或不同類型之其他核心)。取決於該應用,邏輯區塊係透過高頻寬互連網路(例如,環狀網路)來與某些固定功能邏輯、記憶體I/O介面、及其他必要I/O邏輯通訊。
圖15A為單處理器核心之方塊圖,連同與晶粒上互連網路1502之其連接、以及第二階(L2)快取記憶體1504之其本地子集,依據本發明之實施例。於一實施例中,指令解碼器1500支援具有緊縮資料指令集擴充之x86指令集。L1快取記憶體1506容許針對快取記憶體之低潛時存取入純量及向量單元。雖然於一實施例中(為了簡化設計),純量單元1508及向量單元1510使用分離的暫存器組(個別地,純量暫存器1512及向量暫存器1514),且於其間轉移的資料被寫入至記憶體並接著從第一階(L1)快取記憶體1506中被讀取回;但本發明之替代實施例可使用不同的方式(例如,使用單一暫存器組或者包括一通訊路徑,其容許資料被轉移於兩暫存器檔之間而不被寫入
及讀取回)。
L2快取記憶體1504之本地子集為其被劃分為分離本地子集(每一處理器核心有一個)之總體L2快取記憶體的部分。各處理器核心具有一直接存取路徑通至L2快取記憶體1504之其本身的本地子集。由處理器核心所讀取的資料被儲存於其L2快取記憶體子集1504中且可被快速地存取,平行於存取其本身本地L2快取記憶體子集之其他處理器核心。由處理器核心所寫入之資料被儲存於其本身的L2快取記憶體子集1504中且自其他子集清除,假如需要的話。環狀網路確保共享資料之一致性。環狀網路為雙向的,以容許諸如處理器核心、L2快取記憶體及其他邏輯區塊等代理於晶片內部與彼此通訊。各環狀資料路徑於每一方向為1012個位元寬。
圖15B為圖15A中之處理器核心的部分之延伸視圖,依據本發明之實施例。圖15B包括L1快取記憶體1504之L1資料快取記憶體1506A部分、以及有關向量單元1510和向量暫存器1514之更多個細節。明確地說,向量單元1510為16寬的向量處理單元(VPU)(參見16寬的ALU 1528),其係執行整數、單精確度浮點、及雙精確度浮點指令之一或更多者。VPU支援以拌合(swizzle)單元1520拌合暫存器輸入、以數字轉換單元1522A-B之數字轉換、及於記憶體輸入上以複製單元1524之複製。寫入遮罩暫存器1526容許斷定結果向量寫入。
圖16為一種處理器1600之方塊圖,該處理器1600可具有多於一個核心、可具有集成記憶體控制器、且可具有集成圖形,依據本發明之實施例。圖16中之實線方塊繪示處理器1600,其具有單一核心1602A、系統代理1610、一組一或更多個匯流排控制器單元1616;而虛線方塊之選擇性加入繪示一替代處理器1600,其具有多核心1602A-N、系統代理單元1610中之一組一或更多個集成記憶體控制器單元1614、及特殊用途邏輯1608。
因此,處理器1600之不同實施方式可包括:1)CPU,具有其為集成圖形及/或科學(通量)邏輯(其可包括一或更多個核心)之特殊用途邏輯1608、及其為一或更多個通用核心(例如,通用依序核心、通用失序核心、兩者之組合)之核心1602A-N;2)協同處理器,其具有其為主要用於圖形及/或科學(通量)之大量特殊用途核心的核心1602A-N;及3)協同處理器,具有其為大量通用依序核心的核心1602A-N。因此,處理器1600可為通用處理器、協同處理器或特殊用途處理器,諸如(例如)網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高通量多個集成核心(MIC)協同處理器(包括30或更多個核心)、嵌入式處理器,等等。該處理器可被實施於一或更多個晶片上。處理器1600可為一或更多個基板之部分及/或可被實施於其上,使用數個製程技術之任一者,諸如(例如)BiCMOS、CMOS、
或NMOS。
記憶體階層包括該些核心內之一或更多個階的快取記憶體、一組或者一或更多個共享快取單元1606、及耦合至該組集成記憶體控制器單元1614之額外記憶體(未顯示)。該組共享快取單元1606可包括一或更多個中階快取記憶體,諸如第二階(L2)、第三階(L3)、第四階(L4)、或其他階快取記憶體、最後階快取記憶體(LLC)、及/或其組合。雖然於一實施例中以環狀為基礎的互連單元1612將以下裝置互連:集成圖形邏輯1608、該組共享快取單元1606、及系統代理單元1610/集成記憶體單元1614,但替代實施例可使用任何數目之眾所周知的技術以互連此等單元。於一實施例中,一致性被維持於一或更多個快取單元1606與核心1602-A-N之間。
於某些實施例中,一或更多個核心1602A-N能夠進行多線程。系統代理1610包括協調並操作核心1602A-N之那些組件。系統代理單元1610可包括(例如)電力控制單元(PCU)及顯示單元。PCU可為或者包括用以調節核心1602A-N及集成圖形邏輯1608之電力狀態所需的邏輯和組件。顯示單元係用以驅動一或更多個外部連接的顯示器。
核心1602A-N可針對架構指令集為同質的或異質的;亦即,二或更多個核心1602A-N可執行相同的指令集,而其他者可執行該指令集或不同指令集之僅一子集。
圖17-20為範例電腦架構之方塊圖。用於膝上型電腦、桌上型電腦、手持式PC、個入數位助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視頻遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持式裝置、及各種其他電子裝置之技術領域中已知的其他系統設計和組態亦為適當的。通常,能夠結合處理器及/或其他執行邏輯(如本文中所揭露者)之多種系統或電子裝置一般為適當的。
現在參考圖17,其顯示依據本發明之一實施例的系統1700之方塊圖。系統1700可包括一或更多個處理器1710、1715,其被耦合至控制器集線器1720。於一實施例中,控制器集線器1720包括圖形記憶體控制器集線器(GMCH)1790及輸入/輸出集線器(IOH)1750(其可於分離的晶片上);GMCH 1790包括記憶體及圖形控制器(耦合至記憶體1740及協同處理器1745);IOH 1750為耦合至GMCH 1790之輸入/輸出(I/O)裝置1760。另一方面,記憶體與圖形控制器之一或兩者被集成於處理器內(如文中所述者),記憶體1740及協同處理器1745被直接地耦合至處理器1710、及具有IOH 1750之單一晶片中的控制器集線器1720。
於圖17中以斷線標示額外處理器1715之選擇性本質。各處理器1710、1715可包括文中所述的處理核心之
一或更多者並可為處理器1600之某版本。
記憶體1740可為(例如)動態隨機存取記憶體(DRAM)、相位改變記憶體(PCM)、或兩者之組合。針對至少一實施例,控制器集線器1720經由諸如前側匯流排(FSB)等多點分支匯流排、諸如QuickPath互連(QPI)等點對點介面、或類似連接1795而與處理器1710、1715通訊。
於一實施例中,協同處理器1745為特殊用途處理器,諸如(例如)高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器,等等。於一實施例中,控制器集線器1720可包括集成圖形加速器。
於實體資源1710、1715間可有多樣差異,針對價值度量之譜,包括架構、微架構、熱、功率耗損特性,等等。
於一實施例中,處理器1710執行其控制一般類型之資料處理操作的指令。指令內所嵌入者可為協同處理器指令。處理器1710辨識這些協同處理器指令為其應由附接之協同處理器1745所執行的類型。因此,處理器1710將協同處理器匯流排或其他互連上之這些協同處理器指令(或代表協同處理器指令之控制信號)發送至協同處理器1745。協同處理器1745接受並執行該些接收的協同處理器指令。
現在參考圖18,其顯示依據本發明之實施例的第一
更特定範例系統1800之方塊圖。如圖18中所示,多處理器系統1800為點對點互連系統,並包括經由點對點互連1850而耦合之第一處理器1870及第二處理器1880。處理器1870及1880之每一者可為處理器1600之某版本。於本發明之一實施例中,處理器1870及1880個別為處理器1710及1715,而協同處理器1838為協同處理器1745。於另一實施例中,處理器1870及1880個別為處理器1710及協同處理器1745。
處理器1870及1880被顯示為個別地包括集成記憶體控制器(IMC)單元1872及1882。處理器1870亦包括其匯流排控制器單元點對點(P-P)介面1876及1878之部分;類似地,第二處理器1880包括P-P介面1886及1888。處理器1870、1880可使用P-P介面電路1878、1888而經由點對點(P-P)介面1850來交換資訊。如圖18中所示,IMC 1872及1882將處理器耦合至個別記憶體,亦即記憶體1832及記憶體1834,其可為本地地附接至個別處理器之主記憶體的部分。
處理器1870、1880可使用點對點介面電路1876、1894、1886、1898而各經由個別的P-P介面1852、1854而與晶片組1890交換資訊。晶片組1890可經由高性能介面1839而選擇性地與協同處理器1838交換資訊。於一實施例中,協同處理器1838為特殊用途處理器,諸如(例如)高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器,等等。
共享快取記憶體(未顯示)可被包括於任一處理器中或者於兩處理器外部,而經由P-P互連與處理器連接,以致假如處理器被置於低功率模式時,處理器之任一者或兩者的本地快取資訊可被儲存於共享快取記憶體中。
晶片組1890可經由一介面1896而被耦合至第一匯流排1816。於一實施例中,第一匯流排1816可為周邊組件互連(PCI)匯流排、或者諸如PCI快速匯流排或其他第三代I/O互連匯流排等匯流排,雖然本發明之範圍未如此限制。
如圖18中所示,各種I/O裝置1814可被耦合至第一匯流排1816,連同匯流排橋接器1818,其係將第一匯流排1816耦合至第二匯流排1820。於一實施例中,一或更多個額外處理器1815(諸如協同處理器、高通量MIC處理器、GPGPU之主處理器、加速器(諸如,例如,圖形加速器或數位信號處理(DSP)單元)、場可編程閘極陣列、或任何其他處理器)被耦合至第一匯流排1816。於一實施例中,第二匯流排1820可為低接腳數(LPC)匯流排。各個裝置可被耦合至第二匯流排1820,其包括(例如)鍵盤及/或滑鼠1822、通訊裝置1827、及資料儲存單元1828,諸如磁碟機或其他大量儲存裝置(其可包括指令/碼及資料1830),於一實施例中。此外,音頻I/O 1824可被耦合至第二匯流排1820。注意:其他架構是可能的。例如,取代圖18之點對點架構,系統可實施多點分支匯流排或其他此類架構。
現在參考圖19,其顯示依據本發明之實施例的第二更特定範例系統1900之方塊圖。圖18及19中之類似元件係具有類似數字,而圖18之某些形態已被省略自圖19以免混淆圖19之其他形態。
圖19繪示處理器1870、1880可個別地包括集成記憶體及個別I/O控制邏輯(「CL」)1872和1882。因此,CL 1872、1882包括集成記憶體控制器單元並包括I/O控制邏輯。圖19繪示其不僅記憶體1832、1834被耦合至CL 1872、1882,同時其I/O裝置1914亦被耦合至控制邏輯1872、1882。舊有I/O裝置1915被耦合至晶片組1890。
現在參考圖20,其顯示依據本發明之一實施例的SoC 2000之方塊圖。圖16中之類似元件具有類似的參考數字。同時,虛線方塊為更多個先進SoC上之選擇性特徵。於圖20中,互連單元2002被耦合至:應用程式處理器2010,其包括一組一或更多個核心202A-N及共享快取單元1606;系統代理單元1610;匯流排控制器單元1616;集成記憶體控制器單元1614;一組一或更多個協同處理器2020,其可包括集成圖形邏輯、影像處理器、音頻處理器、及視頻處理器;靜態隨機存取記憶體(SRAM)單元2030;直接記憶體存取(DMA)單元2032;及顯示單元2040,用以耦合至一或更多個外部顯示。於一實施例中,協同處理器2020包括特殊用途處理器,諸如(例如)網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC
處理器、嵌入式處理器,等等。
文中所揭露之機制的實施例可被實施於硬體、軟體、韌體、或此等實施方式之組合中。本發明之實施例可被實施為電腦程式或程式碼,其被執行於可編程系統上,該可編程系統包含至少一處理器、儲存系統(包括揮發性和非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
程式碼(諸如圖18中所示之碼1830)可被應用於輸入指令以施行文中所述之功能並產生輸出資訊。輸出資訊可以已知的方式被應用於一或更多個輸出裝置。為了本申請案之目的,處理系統包括任何系統,其具有處理器,諸如(例如)數位信號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器。
程式碼可被實施於高階程序或目標導向的編程語言中來與處理系統通訊。假如想要的話,程式碼亦可被實施於組合或機器語言中。事實上,本文中所述之機制在範圍上不限於任何特定編程語言。於任何情況下,該語言可為編譯或解讀語言。
至少一實施例之一或更多個形態可由其儲存在機器可讀取媒體上之代表性指令所實施,該機器可讀取媒體代表處理器內之各個邏輯,當由機器讀取時造成該機器製造邏輯以施行文中所述之技術。此等表示(已知為「IP核心」)可被儲存在有形的、機器可讀取媒體上,且被供應至各個消費者或製造設施以載入至其實際上製造該邏輯或
處理器之製造機器中。
此類機器可讀取儲存媒體可包括(無限制)由機器或裝置所製造或形成之物件的非暫態、有形配置,包括:儲存媒體,諸如硬碟、包括軟碟、光碟、微型碟唯讀記憶體(CD-ROM)、微型碟可再寫入(CD-RW)、及磁光碟等任何其他類型的碟片;半導體裝置,諸如唯讀記憶體(ROM)、諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可編程唯讀記憶體(EPROM)等之隨機存取記憶體(RAM)、快閃記憶體、電可抹除可編程唯讀記憶體(EEPROM)、相位改變記憶體(PCM)、磁或光學卡、或者適於儲存電子指令之任何其他類型的媒體。
因此,本發明之實施例亦包括含有指令或含有諸如硬體描述語言(HDL)等設計資料之非暫態、有形的機器可讀取媒體,該硬體描述語言(HDL)係定義本文中所述之結構、電路、裝置、處理器及/或系統特徵。此類實施例亦可被稱為程式產品。
於某些情況下,指令轉換器可被用以將來自來源指令集之指令轉換至目標指令集。例如,指令轉換器可將指令翻譯(例如,使用靜態二元翻譯、動態二元翻譯,包括動態編譯)、變形、仿真、或者轉換至一或更多個其他指令以供由核心所處理。指令轉換器可被實施於軟體、硬體、
韌體、或其組合中。指令轉換器可位於處理器上、處理器外、或者部分於處理器上而部分於處理器外。
圖21為一種對照軟體指令轉換器之使用的方塊圖,該轉換器係用以將來源指令集中之二元指令轉換至目標指令集中之二元指令,依據本發明之實施例。於所述之實施例中,指令轉換器為一種軟體指令轉換器,雖然替代地該指令轉換器亦可被實施於軟體、韌體、硬體、或其各種組合中。圖21顯示一種高階語言2102之程式可使用x86編譯器2104而被編譯以產生x86二元碼2106,其可由具有至少一x86指令集核心之處理器2116來本機地執行。具有至少一x86指令集核心之處理器2116代表任何處理器,其可藉由可相容地執行或者處理以下事項來施行實質上如一種具有至少一x86指令集核心之Intel處理器的相同功能:(1)Intel x86指令集核心之指令集的實質部分或者(2)針對運作於具有至少一x86指令集核心之Intel處理器上的應用程式或其他軟體之物件碼版本,以獲得如具有至少一x86指令集核心之Intel處理器的相同結果。x86編譯器2104代表一種編譯器,其可操作以產生x86二元碼2106(例如,物件碼),其可(具有或沒有額外鏈結處理)被執行於具有至少一x86指令集核心之處理器2116上。類似地,圖21顯示高階語言2102之程式可使用替代的指令集編譯器2108而被編譯以產生替代的指令集二元碼2110,其可由沒有至少一x86指令集核心之處理器2114來本機地執行(例如,具有其執行MIPS
Technologies of Sunnyvale,CA之MIPS指令集及/或其執行ARM Holdings of Sunnyvale,CA之ARM指令集的核心之處理器)。指令轉換器2112被用以將x86二元碼2106轉換為其可由沒有一x86指令集核心之處理器2114來本機地執行的碼。已轉換碼不太可能相同於替代的指令集二元碼2110,因為能夠執行此功能之指令很難製造;然而,已轉換碼將完成一般性操作並由來自替代指令集之指令所組成。因此,指令轉換器2112代表軟體、韌體、硬體、或其組合,其(透過仿真、模擬或任何其他程序)容許處理器或其他不具有x86指令集處理器或核心的電子裝置來執行x86二元碼2106。
101‧‧‧處理器核心
103‧‧‧記憶體
105‧‧‧壓縮串
107‧‧‧未壓縮串
109‧‧‧快速和緩慢處理碼
111‧‧‧加速器
113‧‧‧執行單元
Claims (26)
- 一種硬體裝置,包含:輸入緩衝器,用以儲存來自壓縮串之進入的輸入記錄,該壓縮串具有針對複製字串的文字位元組和指標;複數個解碼器,各解碼器係用以解碼來自該輸入緩衝器之至少一輸入記錄並輸出來自已解碼資料之中間記錄,及該等複數個解碼器之一子集,用以輸出一串文字;及再格式化電路,用以將中間記錄格式化成為二類型符記的其中之一者,其中,第一類型符記係包含8個非零長度和8個來源指標,而且第二類型符記係包含溢出位元組、長度、及來源位址。
- 如請求項1之硬體裝置,其中,該等複數個解碼器之第一個依據DEFLATE壓縮演算法來解碼並輸出被霍夫曼編碼之一位元組對準文字串的文字。
- 如請求項2之硬體裝置,其中,該中間記錄包括一組文字、有關該中間記錄之數個文字的資訊、及關於參考之資訊的至少其中一者。
- 如請求項1之硬體裝置,其中,該等複數個解碼器之第二個用以產生每一輸入記錄之中間記錄。
- 如請求項1之硬體裝置,其中,該等複數個解碼器之第三個用以從複數個輸入記錄中產生單一中間記錄。
- 如請求項1之硬體裝置,其中,該等複數個解碼器之第四個用以從單一輸入記錄中產生複數個中間記錄。
- 如請求項1之硬體裝置,其中,給定的解碼器根據提供給該解碼器之內容而產生下列各者的其中之一:每一輸入記錄的單一中間記錄、每一輸入記錄的複數個中間記錄、及每一複數個輸入記錄的單一中間記錄。
- 如請求項1之硬體裝置,其中,該裝置係位於處理器核心之外部。
- 如請求項1之硬體裝置,進一步包含:中間記錄分級緩衝器,用以緩衝連續中間記錄,其中,該再格式化電路藉由檢查來自參考記錄與跨立該已緩衝的連續中間記錄之偏移的任何依存性來格式化該等符記,並產生針對快速路徑使用之該第一類型符記或針對緩慢路徑使用之該第二類型符記。
- 如請求項1之硬體裝置,其中,該壓縮串為LZ77串。
- 如請求項9之硬體裝置,其中,該緩慢路徑並不使用硬體加速。
- 如請求項1之硬體裝置,其中,該第一類型符記之長度的尺寸為8個位元。
- 如請求項1之硬體裝置,其中,該第一類型符記的長度係以位元位置來表示的。
- 如請求項1之硬體裝置,其中,該第一類型符記之長度的尺寸為64個位元。
- 如請求項1之硬體裝置,進一步包含:單指令多資料電路,用以每符記平行地處理位元組。
- 一種解壓縮方法,包含:接收針對文字或參考之複數個符記;從該等符記載入具有遮罩之第一暫存器;從該等符記載入具有位址指標之第二暫存器;將指向該第二暫存器之該等位址指標的位置上之每符記的第一數個位元組收集並儲存入第三暫存器;使用該遮罩來壓縮該等收集並儲存的位元組;將該壓縮之結果儲存至輸出指標;及以藉由該壓縮所產生的數個位元組來遞增該輸出指 標。
- 如請求項16之方法,其中,該遮罩係由針對文字或參考之複數個符記的長度所組成。
- 如請求項16之方法,其中,該等位址指標包含來自該等符記之各者的64位元的值。
- 如請求項16之方法,進一步包含:判定該等符記之第一個位元組不是零。
- 如請求項16之方法,其中,該第一暫存器為64位元的通用暫存器。
- 如請求項16之方法,其中,該第一暫存器為64位元的寫入遮罩暫存器。
- 如請求項16之方法,其中,該第二及第三暫存器為512位元的緊縮資料暫存器。
- 一種解壓縮方法,包含:從解壓縮器硬體接收兩類型的輸出的其中之一,其中,該解壓縮器硬體產生符記以外之額外文字串於第一類型的輸出中,而該解壓縮器硬體僅產生符記於第二類型 中;及藉由提供輸入指標至該額外文字串以後處理該第一類型的輸出,及藉由傳遞指標至原始壓縮串以後處理該第二類型的輸出。
- 如請求項23之方法,其中,針對任何選定類型的輸出,該解壓縮器硬體於DEFLATE及LZS解碼的其中之一期間產生該額外文字串。
- 如請求項23之方法,其中,針對任何選定類型的輸出,該解壓縮器硬體於LZ4及Snappy解碼期間不會產生額外文字串。
- 如請求項23之方法,其中,軟體係藉由繼續保持住該解壓縮器硬體之足夠的輸出以維持歷史緩衝器,以服務從該解壓縮器硬體所收集的參考。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/866,749 | 2015-09-25 | ||
US14/866,749 US10135461B2 (en) | 2015-09-25 | 2015-09-25 | Systems, methods, and apparatuses for decompression using hardware and software |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201722088A TW201722088A (zh) | 2017-06-16 |
TWI729996B true TWI729996B (zh) | 2021-06-11 |
Family
ID=58387442
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105125465A TWI729996B (zh) | 2015-09-25 | 2016-08-10 | 使用硬體及軟體來解壓縮之系統、方法及裝置 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10135461B2 (zh) |
CN (2) | CN107925419B (zh) |
DE (1) | DE112016004359T5 (zh) |
TW (1) | TWI729996B (zh) |
WO (1) | WO2017053840A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6416084B2 (ja) | 2012-05-31 | 2018-10-31 | ベイリス メディカル カンパニー インコーポレイテッドBaylis Medical Company Inc. | 医療機器 |
EP3581132B1 (en) | 2013-03-15 | 2021-06-16 | Baylis Medical Company Inc. | Electrosurgical device having a distal aperture |
CN106535982B (zh) | 2014-03-24 | 2019-08-23 | 贝利斯医疗公司 | 用于流体连通的医疗设备 |
CN112771498A (zh) * | 2018-07-05 | 2021-05-07 | 米西克有限公司 | 用于实施智能处理计算架构的系统和方法 |
US10541708B1 (en) * | 2018-09-24 | 2020-01-21 | Redpine Signals, Inc. | Decompression engine for executable microcontroller code |
US10707897B1 (en) * | 2019-09-04 | 2020-07-07 | Advanced Micro Devices, Inc. | Command processor with multiple string copy engines for a decompression system |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020101367A1 (en) * | 1999-01-29 | 2002-08-01 | Interactive Silicon, Inc. | System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms |
US20050104753A1 (en) * | 2003-11-18 | 2005-05-19 | M-Systems Flash Disk Pioneers, Ltd. | Decompression accelerator for flash memory |
TWI325233B (en) * | 2005-10-06 | 2010-05-21 | Analog Devices Inc | System and method for decoding data compressed in accordance with dictionary-based compression schemes |
TW201322649A (zh) * | 2011-11-17 | 2013-06-01 | Proscend Comm Inc | 一種資料壓縮方法 |
TW201440045A (zh) * | 2013-04-02 | 2014-10-16 | Mstar Semiconductor Inc | 解壓縮電路與相關的解壓縮方法 |
CN104202054A (zh) * | 2014-09-16 | 2014-12-10 | 东南大学 | 一种硬件lzma压缩实现系统及方法 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5603012A (en) * | 1992-06-30 | 1997-02-11 | Discovision Associates | Start code detector |
US5325092A (en) * | 1992-07-07 | 1994-06-28 | Ricoh Company, Ltd. | Huffman decoder architecture for high speed operation and reduced memory |
US5363097A (en) * | 1992-09-14 | 1994-11-08 | Industrial Technology Research Institute | Direct sequential-bit variable length decoder |
US5583500A (en) * | 1993-02-10 | 1996-12-10 | Ricoh Corporation | Method and apparatus for parallel encoding and decoding of data |
JP2746109B2 (ja) * | 1994-03-09 | 1998-04-28 | 日本電気株式会社 | ハフマン符号復号化回路 |
US6021198A (en) * | 1996-12-23 | 2000-02-01 | Schlumberger Technology Corporation | Apparatus, system and method for secure, recoverable, adaptably compressed file transfer |
US5874908A (en) * | 1997-09-19 | 1999-02-23 | International Business Machines Corporation | Method and apparatus for encoding Lempel-Ziv 1 variants |
US6961474B1 (en) * | 1998-02-27 | 2005-11-01 | Shikino High-Tech Co., Ltd. | Huffman encoder for encoding/decoding DCT coefficients |
US6195024B1 (en) * | 1998-12-11 | 2001-02-27 | Realtime Data, Llc | Content independent data compression method and system |
US6822589B1 (en) * | 1999-01-29 | 2004-11-23 | Quickshift, Inc. | System and method for performing scalable embedded parallel data decompression |
US6313767B1 (en) * | 1999-02-19 | 2001-11-06 | Canon Kabushiki Kaisha | Decoding apparatus and method |
US6865159B2 (en) * | 2001-10-02 | 2005-03-08 | Hewlett-Packard Development Company, L.P. | System and method for comfort noise production |
US6934903B1 (en) * | 2001-12-17 | 2005-08-23 | Advanced Micro Devices, Inc. | Using microcode to correct ECC errors in a processor |
US6907598B2 (en) * | 2002-06-05 | 2005-06-14 | Microsoft Corporation | Method and system for compressing program code and interpreting compressed program code |
US7283591B2 (en) * | 2003-03-28 | 2007-10-16 | Tarari, Inc. | Parallelized dynamic Huffman decoder |
JP2009026106A (ja) * | 2007-07-20 | 2009-02-05 | Oki Electric Ind Co Ltd | 命令コード圧縮方法と命令フェッチ回路 |
JP4893657B2 (ja) * | 2008-02-29 | 2012-03-07 | ソニー株式会社 | 算術復号装置 |
US7692561B2 (en) * | 2008-07-17 | 2010-04-06 | International Business Machines Corporation | Method and apparatus for data decompression in the presence of memory hierarchies |
US8301803B2 (en) * | 2009-10-23 | 2012-10-30 | Samplify Systems, Inc. | Block floating point compression of signal data |
US8125357B1 (en) | 2010-03-23 | 2012-02-28 | Sandia Corporation | Deflate decompressor |
KR20120084180A (ko) * | 2011-01-19 | 2012-07-27 | 삼성전자주식회사 | 데이터 압축 장치, 이의 동작 방법, 및 이를 포함하는 데이터 처리 장치 |
US8824569B2 (en) * | 2011-12-07 | 2014-09-02 | International Business Machines Corporation | High bandwidth decompression of variable length encoded data streams |
US8674856B2 (en) * | 2012-08-16 | 2014-03-18 | International Business Machines Corporation | Data compression utilizing longest common subsequence template |
US8618960B1 (en) * | 2012-08-16 | 2013-12-31 | International Business Machines Corporation | Selective recompression of a string compressed by a plurality of diverse lossless compression techniques |
US8791843B2 (en) * | 2012-10-15 | 2014-07-29 | Lsi Corporation | Optimized bitstream encoding for compression |
US9672041B2 (en) * | 2013-08-01 | 2017-06-06 | Andes Technology Corporation | Method for compressing variable-length instructions including PC-relative instructions and processor for executing compressed instructions using an instruction table |
US9252807B2 (en) | 2013-10-21 | 2016-02-02 | Globalfoundries Inc. | Efficient one-pass cache-aware compression |
US9348535B1 (en) * | 2014-03-07 | 2016-05-24 | Google Inc. | Compression format designed for a very fast decompressor |
CN106656200B (zh) * | 2016-12-13 | 2019-11-08 | 合肥工业大学 | 一种程序计数器压缩方法及其硬件电路 |
-
2015
- 2015-09-25 US US14/866,749 patent/US10135461B2/en active Active
-
2016
- 2016-08-10 TW TW105125465A patent/TWI729996B/zh not_active IP Right Cessation
- 2016-09-23 CN CN201680048980.XA patent/CN107925419B/zh active Active
- 2016-09-23 DE DE112016004359.7T patent/DE112016004359T5/de not_active Withdrawn
- 2016-09-23 WO PCT/US2016/053504 patent/WO2017053840A1/en active Application Filing
- 2016-09-23 CN CN202111452703.4A patent/CN114142867A/zh active Pending
-
2018
- 2018-11-20 US US16/197,086 patent/US10666288B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020101367A1 (en) * | 1999-01-29 | 2002-08-01 | Interactive Silicon, Inc. | System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms |
US20050104753A1 (en) * | 2003-11-18 | 2005-05-19 | M-Systems Flash Disk Pioneers, Ltd. | Decompression accelerator for flash memory |
TWI325233B (en) * | 2005-10-06 | 2010-05-21 | Analog Devices Inc | System and method for decoding data compressed in accordance with dictionary-based compression schemes |
TW201322649A (zh) * | 2011-11-17 | 2013-06-01 | Proscend Comm Inc | 一種資料壓縮方法 |
TW201440045A (zh) * | 2013-04-02 | 2014-10-16 | Mstar Semiconductor Inc | 解壓縮電路與相關的解壓縮方法 |
CN104202054A (zh) * | 2014-09-16 | 2014-12-10 | 东南大学 | 一种硬件lzma压缩实现系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
US20170093424A1 (en) | 2017-03-30 |
US20190173489A1 (en) | 2019-06-06 |
WO2017053840A1 (en) | 2017-03-30 |
TW201722088A (zh) | 2017-06-16 |
CN114142867A (zh) | 2022-03-04 |
US10135461B2 (en) | 2018-11-20 |
CN107925419B (zh) | 2022-01-04 |
US10666288B2 (en) | 2020-05-26 |
CN107925419A (zh) | 2018-04-17 |
DE112016004359T5 (de) | 2018-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI729996B (zh) | 使用硬體及軟體來解壓縮之系統、方法及裝置 | |
TWI743058B (zh) | 硬體處理器、用於融合指令之方法及非暫時性機器可讀媒體 | |
TWI616817B (zh) | 用於在成組的向量元件上進行歸約運算的方法及設備 | |
JP6456867B2 (ja) | 密結合ヘテロジニアスコンピューティングのためのハードウェアプロセッサ及び方法 | |
TWI639952B (zh) | 用於建置及維持在亂序硬體軟體協同設計處理器中具有堆疊同步指令的述詞值之堆疊的方法、設備與非暫態機器可讀媒體 | |
US9354877B2 (en) | Systems, apparatuses, and methods for performing mask bit compression | |
TWI731868B (zh) | 用於使用硬體與軟體之壓縮的系統、方法及裝置 | |
KR101851439B1 (ko) | 충돌 검출을 수행하고, 레지스터의 콘텐츠를 다른 레지스터의 데이터 구성요소 위치들로 브로드캐스트하기 위한 시스템들, 장치들 및 방법들 | |
TWI737651B (zh) | 用於加速圖形分析的處理器、方法及系統 | |
TW202132977A (zh) | 資料元件比較處理器、方法、系統及指令 | |
JP2017534114A (ja) | Z順序曲線において次のポイントの座標を計算するためのベクトル命令 | |
CN117546152A (zh) | 用于加速流送数据变换操作的电路和方法 | |
JP6835436B2 (ja) | マスクをマスク値のベクトルに拡張するための方法および装置 | |
US10069512B2 (en) | Systems, methods, and apparatuses for decompression using hardware and software | |
CN114676090A (zh) | 用于低时延页解压缩和压缩加速的电路和方法 | |
TWI628595B (zh) | 用以執行反離心操作之處理設備和非暫態機器可讀取媒體 | |
JP2021051724A (ja) | デュアル空間パターンプリフェッチャについての装置、方法、およびシステム | |
TW201810020A (zh) | 用於累乘的系統、設備及方法 | |
TW201810034A (zh) | 用於累和的系統、設備及方法 | |
JP2018500665A (ja) | マスク値を圧縮するための方法および装置 | |
US20140068227A1 (en) | Systems, apparatuses, and methods for extracting a writemask from a register |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |