TWI692213B - 用以執行資料壓縮的處理裝置和方法以及系統單晶片(SoC) - Google Patents
用以執行資料壓縮的處理裝置和方法以及系統單晶片(SoC) Download PDFInfo
- Publication number
- TWI692213B TWI692213B TW105125634A TW105125634A TWI692213B TW I692213 B TWI692213 B TW I692213B TW 105125634 A TW105125634 A TW 105125634A TW 105125634 A TW105125634 A TW 105125634A TW I692213 B TWI692213 B TW I692213B
- Authority
- TW
- Taiwan
- Prior art keywords
- byte
- symbol
- stream
- token
- string
- 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/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
一種處理裝置,包括用以儲存資料之儲存裝置及可操作地耦接至該儲存裝置之處理器,該處理器用以接收包含基於包含複數個位元組的位元組流所產生的複數個符記之符記流,其中該符記流中的各符記至少包含一與該位元組流中個別位元組相關之符號,且其中該至少一符號代表該個別位元組、從該個別位元組開始之第一位元組字串的長度、或該第一位元組字串及匹配第二位元組字串之間的位元組距離之一者,並基於該符記流而產生包含複數個節點及邊緣的圖形,其中該符記流中的各符記係相關於藉由至少一邊緣而連接到另一節點之個別節點,且其中該至少一邊緣係相關於成本函數以將儲存在該各符記中之該至少一符號編碼,並基於該圖形而識別在第一節點及終端節點之間的路徑,該第一節點與該符記流之起始符記相關而該終端節點與該符記流之最終符記相關,其中該路徑包含節點之子集及連接該節點之子集的邊緣,並執行與該節點之子集相關的符記之子集的可變長度編碼,以產生輸出資料。
Description
本揭示之實施例一般相關於資料壓縮,且更明確地相關於用以達到極壓縮比之異質資料壓縮架構。
資料壓縮系統及方法將輸入資料轉換成壓縮格式以降低該資料尺寸,從而賦能有效率儲存及傳輸。該輸入資料可包含位元組之位元組流(指稱為位元組流)。該位元組流可被組織成一系列之資料區塊。各資料區塊包括配置成序列次序之資料位元組。標準資料壓縮方法可包括LZ77字串匹配器及霍夫曼編碼器之組合以產生該輸入資料之壓縮格式。
從以下給定詳細說明及從本揭示各實施例之隨附圖式可更完整地瞭解本揭示。然而,該等圖式不應被理解為限制本揭示於該特定實施例,而僅適用於說明及理解。
圖1顯示根據本揭示之實施例之包括處理器以執行資料壓縮的處理裝置。
圖2顯示根據本揭示之實施例之包括處理器及硬體處理引擎以執行資料壓縮的異質系統。
圖3顯示根據本揭示之實施例之成本圖形(cost graph)之例示性部分。
圖4係根據本揭示之實施例的用以執行資料壓縮的方法之方塊圖。
圖5A係顯示用於包括其中可使用本揭示之一實施例的異質核心之處理器的微架構之方塊圖。
圖5B係顯示依據本揭示之至少一實施例實作的依序管線及暫存器更名階、失序發出/執行管線之方塊圖。
圖6顯示根據本揭示之一實施例之用於包括邏輯的處理器的微架構之方塊圖。
圖7係顯示其中可使用本揭示之實施例的系統之方塊圖。
圖8係其中可操作本揭示之實施例的系統之方塊圖。
圖9係其中可操作本揭示之實施例的系統之方塊圖。
圖10係根據本揭示之實施例的系統單晶片(SoC)之方塊圖。
圖11係根據本揭示的SoC設計的實施例之方塊圖。
圖12顯示計算機系統之一實施例的方塊圖。
實作於硬體或軟體中的LZ77字串匹配器將重複出現
之資料替換成對在該先前存在於未壓縮資料流中之資料的單一副本之引用。在若干實作中,LZ77字串匹配器識別位元組流中位元組之重覆子字串(substring),並將該識別之重複子字串替換成向後引用。位元組子字串包括在位元組的流(指稱為位元組流)中的兩個或更多連續位元組。若兩子字串相同,則兩位元組子字串被重複或匹配。向後引用可包括識別的重複子字串之長度及識別的子字串與先前匹配子字串之間的位元組距離。就子字串中的位元組數量而言可測量子字串之長度,且就位元組流中兩個匹配子字串之對應位元組位置之間的位元組數量而言可測量位元組距離。假如LZ77字串匹配器不能識別始於位元組位置處重複的子字串,則由文字位元組(literal byte)來代表在輸出流中的資料位元組。因此,LZ77字串匹配器將輸入位元組流轉換成符記流,其包括一系列之可變長度符記,以致於各符記可以子字串長度或文字位元組來儲存重複的位元組子字串之向後引用。在符記流中符記的數量係少於在對應位元組流中位元組的數量,因為向後引用消除了重複的子字串之出現。諸如霍夫曼編碼器之可變長度編碼器可接著將該系列之符記編碼,並將該輸入資料轉換成壓縮資料格式。
因為由LZ77字串匹配器所產生之符記流中的符記具有可變長度,故由可變長度編碼器(諸如霍夫曼編碼器)編碼此些符記所使用之位元(用於編碼的位元數亦稱為成本)不僅取決於由LZ77字串匹配器識別之符記的數量,
亦取決於用以將各符記編碼所使用之位元的數量。因此,由LZ77字串匹配器產生之較短符記流可能不會導致較佳壓縮資料輸出,因為其有可能需要更多位元以將在較短符記流中的各符記編碼。
取決於LZ77字串匹配器所搜尋之最大字串長度,可以不同層級之複雜度來執行LZ77字串匹配器。舉例而言,用於LZ77字串匹配器之字串匹配層級範圍可從層級1到9,而層級1的LZ77字串匹配器搜尋高達小字串長度(例如,四個位元組長)之子字串匹配,且層級9的LZ77字串匹配器搜尋高達大字串長度(例如,十三個位元組長)之子字串匹配。LZ77字串匹配器之層級越高,則需要越多的處理資源。
可運用「遲緩匹配(lazing matching)」方法以改善針對子字串匹配之搜尋。在「遲緩匹配」中,在識別用於當前位元組之最長子字串匹配且位元組流中的文字位元組子字串之後接著在,「遲緩」LZ77字串匹配器觀察在位元組流中當前位元組隨後之下一位元組,以判定較長子字串匹配是否存在於下一位元組中。若較長匹配存在,則「遲緩」LZ77字串匹配器不針對當前位元組產生向後引用符記,以利於下一位元組。「遲緩」LZ77字串匹配器使用從在當前位元組鄰近之位元組導出的試探式(heuristics)來選擇符記,並因此無法考慮位元組流之總體特徵。因此,當前LZ77字串匹配器無法可靠地產生用於輸入資料之最佳資料壓縮,此係因為其不考慮編碼位元
組流所需要的所有位元。
取代基於在當前位元組附近之局部特徵而選擇匹配位元組子字串,本揭示之實施例根據用以編碼輸入資料的全體數量之位元之測量來做出選擇。有鑒於此,本揭示之實施例識別用於在輸入位元組流中各位元組的匹配位元組子字串(諸如最長匹配位元組子字串),並產生用於在位元組流中的各位元組之符記。實施例指定與霍夫曼編碼器相關之成本測量給該符記,然而該成本測量可能係測量以將與符記相關之符號編碼所採用的位元的數量之成本函數。接著,考慮符記之多個可能組合,根據特定成本標準來選擇最佳符記集。
圖1顯示根據本揭示之實施例之包括處理器以執行資料壓縮的處理裝置100。處理裝置100可包括處理器102及可操作地耦接到該處理器102之儲存裝置104。處理器102可進一步包括一或多處理核心(未示出),其可能被組態以執行資料壓縮之指令。儲存裝置104可為適當類型之儲存裝置,用以儲存不論在未壓縮格式或在壓縮格式之資料。
在一實施例中,處理器102可接收在未壓縮格式中的輸入資料,其將被轉換成壓縮格式。輸入資料包括位元組之流(或位元組流),其根據序列次序配置。因此,在位元組流中的各位元組可由參照參考位元組之位元組位置而被指稱(例如,位元組流之第一位元組)。位元組位置代表位元組之數量給參考位元組,且可根據遠離該參考位元
組多少位元組來測量。在若干實施例中,在位元組流中的位元組可被組織成資料區塊,其各可具有預判定尺寸(例如,資料區塊可包含16K、32K、或64K位元組)。因此,位元組流可包含位元組的特定數量之資料區塊。
在一實施例中,回應於接收包含位元組流之輸入資料,處理器102可能與符記產生器106結合,以產生包括一或多符記之符記流用於在位元組流中的各位元組。符記產生器106可係硬體邏輯(指稱為功能性處理單元),其經組態以產生符記流。針對匹配位元組子字串(諸如最長匹配子字串),若有匹配則符記可包含向後引用,或是若無匹配則符記可包含文字位元組。相對於LZ77字串匹配器,符記產生器106操作針對位元組流中各位元組之子字串匹配。處理器102可進一步執行符記選擇器108,以根據特定總體成本標準來選擇符記集。根據成本標準,所選擇之符記集係位元組流之最佳化表示法。處理器102可接著執行霍夫曼編碼器110以將所選擇之符記集編碼,並產生壓縮的資料輸出。
符記產生器106執行計算,以搜尋針對位元組流中各位元組的匹配位元組子字串。在一實施例中,匹配位元組子字串係最長位元組子字串,其發端(originating)自匹配先前位元組子字串之當前位元組,該先前位元組子字串發端自在當前位元組之前的位元組。如圖1所示,在一實施例中處理器102可執行在處理器102上之軟體應用程式以執行符記產生器106之操作。如圖2所示,在另一實施
例中處理器102可與硬體處理引擎112協同地運作,該硬體處理引擎112在硬體中實作符記產生器106之操作。
圖2根據本揭示之實施例顯示包括處理器102及硬體處理引擎112以執行資料壓縮的異質系統200。在一實施例中,異質系統200可係系統單晶片(SoC),其可包括處理器102、儲存裝置104、及硬體處理引擎112。處理器102及儲存裝置104可能係與圖1所示的相同或相似者。硬體處理引擎112可包括邏輯電路,其被製造以執行搜尋針對各位元組之匹配位元組子字串之功能,並產生包括一或多符記用於位元組流中的各位元組之符記流。在一實施例中,硬體處理引擎112可被配置在晶片組上,其可通訊地耦接到處理器102之一或多插槽(socket)。因此,如圖2所示,處理器102可接收包括位元組流之輸入資料並傳輸該位元組流到硬體處理引擎112,其可根據該位元組流來計算符記流。硬體處理引擎112可將所產生之符記流儲存在緩衝器(未示出)中,並傳送訊號以通知處理器102該符記流已備妥。回應地,處理器102可從硬體處理引擎112擷取符記流以用於進一步處理。
不論在圖2中所顯示之硬體中實作或在圖1中所顯示之軟體中實作,符記產生器106可接收輸入資料之位元組流並產生對應符記流。在一實施例中,針對位元組流中的各位元組,符記產生器106可搜尋最長位元組子字串,其發端自當前位元組並匹配另一發端自在位元組流中當前位元組之前的位元組之位元組子字串。在一實施例中,符記
產生器106可搜尋在位元組長度之範圍內之最長位元組子字串。舉例而言,符記產生器106可搜尋在[3個位元組,13個位元組]之字串長度範圍內之先前匹配位元組子字串。在另一實施例中,符記產生器106可搜尋較3個位元組更長之匹配位元組子字串。
符記產生器106可產生對應於該位元組之一符記,然而該符記係包含符號以儲存相關於位元組之資訊的資料物件。舉例而言,符號可係代表子字串或文字位元組(Literal byte)的長度或文字位元組之位元。另一符號可係代表到達參考位元組的位元組距離之位元。儲存在符記中對應於該位元組的資訊可能取決於符記產生器106是否成功地定位(located)匹配位元組子字串。若符記產生器106無法識別用於當前位元組之先前匹配位元組子字串,則符記產生器106可產生包含代表當前位元組之文字位元組的符號之符記。然而,若符記產生器106識別用於當前位元組之先前匹配位元組子字串,則符記產生器106可產生包含第一符號及第二符號之符記,該第一符號代表識別的位元組子字串之位元組字串長度(例如,就位元組之數量而言)而該第二符號代表匹配位元組子字串之間的位元組距離。可就兩匹配位元組子字串的頭之間的位元組之數量而言來測量位元組距離。在一實施例中,符記可能係3個位元組的符記,其為<符號A,符號B>之型態,然而符號A可能係一個位元組長,用以代表文字位元組(在無匹配子字串之情況下)或匹配子字串長度(在有匹配子字串
之情況下),且符號B可能係兩個位元組長,用以代表到達參考位元組之位元組距離(在有匹配子字串之前提下)。
因此,位元組流中的各位元組係相關於個別符記,且所有符記形成用於位元組流之符記流。符記流可被儲存在相關於硬體處理引擎112之緩衝器中。處理器102可從硬體處理引擎112擷取符記流以用於進一步處理。在一實施例中,符記產生器106可僅儲存包含匹配位元組子字串之符記,但不儲存針對文字位元組之符記。若處理器102具有對原始輸入位元組流之存取,則處理器102可產生此些符記,其包含來自原始位元組流之文字位元組,並將彼者安插到符記流中的其應有位置。依此方法,在處理器102及硬體處理引擎106之間傳輸之資料量可被降低。
在接收到所產生的符記流時,處理器102可執行符記選擇器108以產生代表輸入位元組流的符記之子集。為此,符記選擇器108可先使用在符記流中的符記以產生圖形,並接著基於該圖形選擇符記之子集。在一實施例中,圖形可包括複數個節點,其由複數個邊緣而互連。針對符記流中的各符記,符記選擇器108可產生該圖形中的對應節點。針對各節點,符記選擇器108產生預設邊緣,其連接該節點到接續節點,其對應於在符記流中的下一個符記。進一步地,若符記包含發端自先前位元組的匹配位元組子字串之資訊,則符記選擇器108可產生連接該節點到另一節點之邊緣,該節點對應於當前位元組之符記,該另
一節點對應於先前符記,其對應於先前位元組。因此,在圖形中各節點可相關於一或多邊緣。
在一實施例中,符記選擇器108可指定編碼成本到圖形中的各邊緣。該編碼成本係用以將與節點相關之符記編碼所需要之位元的數量。因為在編碼實際發生之前相關於各邊緣之編碼成本係未知地,故符記選擇器108可基於特定試探法(heuristics)來指定估計成本。
在一實施例中,符記可包括代表文字位元組或匹配子字串之長度的第一符號(S1)及若符記係向後引用另一符記則代表位元組距離的第二符號(S2)。文字位元組、子字串長度、及位元組距離之值可由符號連同零或更多由編碼方案指明之額外位元來代表。因此,用以編碼符記之成本可包括用以將符號(S1,S2)編碼加上零或更多額外位元之成本。與符號相關之額外位元之數量可根據編碼方案之特定對映表來判定。在霍夫曼編碼方案之前提下,符號(S1)代表無須任何額外位元之文字位元組。代表子字串長度之值的符號(S1)可能相關於零或更多額外位元,此係根據將該值對映到額外位元之第一對映表。舉例而言,根據該第一對映表,11之長度由「265」之符號表示而無額外位元,且12之長度由「265」之相同符號表示而具有一個額外位元。相似地,根據第二對映表,代表位元組距離之值的符號(S2)可能相關於零或更多額外位元。在一實施例中,第二對映表可對映位元組距離之值高達13額外位元。
與符號(S1,S2)相關聯之額外位元不被編碼,且可根據對映表來查明(ascertain),該對映表係基於包含於符記中的文字位元組、子字串長度、或位元組距離。然而,用以將此類符號(S1,S2)編碼所使用之位元的確切數量係未知的,直到霍夫曼編碼之後才知曉。在一實施例中,根據特定估計公式,符記選擇器108可估計用以將此類符號編碼所使用之位元的數量。舉例而言,在一實施例中,用於編碼之位元的數量被估計為符記所在何者區塊的函數。如前文所論及,位元組流(或類似地,符記流)可根據位元組(或符記)之資料區塊的序列而被組織。區塊之尺寸可能係預判定的。舉例而言,第一區塊可包括16k位元組(或符記)且各接續區塊可包括64k位元組(或符記)。針對代表符記流之第一區塊中的子字串長度之符號,假設最小子字串長度為3,則3之長度被指定一3位元估計。指定位元之數量線性地增加到13位元,直到高達29之子字串長度在第一區塊中。長於13之長度被捨去成13個位元。針對代表接續第一區塊的區塊中的子字串長度之符號,3之長度亦被指定一3位元估計。但是指定位元之數量針對43之長度而線性地增加到13位元,直到其被取樣在13位元。進一步地,代表位元組距離之所有符號被指定一5位元估計。代表文字位元組之符號可被指定8.5位元之平均成本估計於第一區塊中,及9.5位元之平均成本估計於接續區塊中。以上提供之指定位元估計為實例。亦可使用其他指定估計。
因此,各邊緣可被指定一指示估計位元(包括用以將符記之符號編碼之指定位元估計及與該符號相關之額外位元)之成本,用以使用由邊緣連接之節點(或對應符記)來執行編碼。在一實施例中,符記選擇器108可使用適當圖形遍歷(graph traversal)方法(例如,寬度為主遍歷方法及深度為主遍歷方法)以遍歷該圖形,用以判定包含從圖形之第一終端到圖形之第二終端連接節點之邊緣的路徑。在一實施例中,使用最少成本標準或用以將沿著該路徑的該等符號編碼之估計位元之最少數量來選擇經判定路徑。例如使用Dijkstra演算法或Floyd-Warshall演算法,最少成本標準可判定沿著在兩個終端之間的所有潛在路徑中的路徑具有最少累計成本之路徑。第一終端及第二終端可對應於在符記流中的起始符記或終結符記。因此,符記選擇器108可選擇對應於沿著判定路徑之節點的符記集,並提供該選擇符記集到霍夫曼編碼器110以執行該編碼並產生為輸入資料之壓縮版本的輸出。
霍夫曼編碼器110可係設計以將選擇的符記集(或儲存於其中的符號)編碼的可變長度編碼器之適當實作。因為圖形之第一遍歷係基於指定給邊緣之估計成本,故選擇的符記集潛在地並非係最佳的選擇。在一實施例中,在霍夫曼編碼110之後,與沿著該路徑之邊緣相關之成本可被更新成由霍夫曼編碼器110所使用以將沿著該路徑的符記中的符號編碼的位元之實際數量。根據指定給該圖形中的邊緣以判定在該圖形中第二路徑之更新成本,符記選擇器
108可接著再次遍歷該圖形。符記選擇器108可接著選擇沿著第二路徑的第二符記集,並提供霍夫曼編碼器110用於第二遍編碼並產生為輸入資料之另一壓縮版本的另一輸出資料。
在一實施例中,將比較第二輸出資料之尺寸於第一輸出資料之尺寸以判定圖形遍歷之進一步迭代及霍夫曼編碼是否係必需的。在一實施例中,若第二輸出及第一輸出之尺寸之間的尺寸差異對第一輸出之尺寸的比率係小於臨界值(例如,10%),則該迭代被停止。否則該迭代可繼續直到該比率達到終結臨界值。
圖3根據本揭示之實施例顯示由符記選擇器產生的圖形300之例示性部分。如圖3所示,圖形300可包括一部分(諸如,圖3中所示的節點56-61),其對應於在符記流中一部分之符記位置56-61,其交互地對應於在基本(underlying)位元組流中的位元組位置56-61。在霍夫曼編碼之前,在該圖形中各邊緣可被指定一估計成本,其由標記C1-C9來代表,而C1-C5代表用以將文字位元組編碼之成本,且C6-C9代表用以將包括子字串長度及位元組距離的符記編碼之成本。為了簡潔,使用標記C1-C9以代表邊緣及與該等邊緣相關之編碼成本兩者。特定節點(諸如,節點57)可能相關於僅連接其相鄰節點(節點56、58)之邊緣(C1、C2)。此些節點對應於僅包含文字位元組之符記,因為在此些位置並未識別出重複子字串。其他節點可相關於其中可找到一或多匹配子字串之位元組位
置。在此實例中,節點56與節點61具有5個位元組匹配,並且因此以邊緣(C8)連接到節點61。邊緣(C7、C6)可推論自邊緣(C8),因為較長匹配暗指在相同位元組位置之多個較短匹配。針對此實例,邊緣連接匹配節點(諸如C6-C9)具有三個位元組之最小長度。雖然未顯示,來自圖形之先前部分的其他邊緣(諸如在節點56之前的節點)亦可連接到此些節點,且節點56-61亦可連接到在節點61之後的節點。
適當圖形遍歷演算法(graph traversal algorithm)可被使用以識別連接圖形之第一節點(例如,節點1)到圖形之終端節點之路徑。路徑可被選擇以經由邊緣通過經選擇的節點之子集,根據特定標準(諸如最少成本標準)該等邊緣與節點之子集相關。圖形遍歷可從節點1進展到終端節點,或反之亦然。可將用於編碼文字位元組之初始編碼成本或假設特殊仿節點被使用作為節點1則為零成本指定給節點1。遍歷可被視為一系列之從起點(指稱為源節點)到判定終點(指稱為目的地節點)之步驟。源節點可能透過與源節點相關之邊緣而被連接到數個潛在目的地節點。將編碼多達源節點加上通往此些潛在目的地節點的邊緣之成本的成本給定給可從源節點達到的所有潛在目的地節點。在用以於遍歷期間搜尋下一個目的地節點之下個步驟中,最少成本目的地節點可成為新的源節點。因此,從節點1到終端節點之最少成本路徑可藉由根據指定給圖形中的邊緣之成本來遍歷該圖形而判定。
在一實施例中,符記產生器106產生不僅用於符記中位元組流中的位元組之最長匹配位元組子字串,亦產生符記中其他類型之匹配。舉例而言,符記產生器106,除了識別長度之最長匹配子字串,亦識別長度-1位元組及/或長度-2位元組之最接近匹配等等。可將附加資訊儲存在提供給符記選擇器108之符記中。根據用以改善壓縮性能之附加資訊,符記選擇器108可產生在圖形中的附加邊緣。
圖4係用以執行根據本揭示之實施例的資料壓縮的方法400之方塊圖。方法400可藉由包括硬體(例如,電路、專用邏輯、可編程邏輯、微碼等)、軟體(諸如,在處理裝置上運行之指令、通用計算機系統、或專用機器)、韌體、或其組合之處理邏輯來執行。在一實施例中,方法400可部分地由圖1所示處理裝置102之處理邏輯來操作。
為了說明之簡潔性,方法400被描述且說明為一系列之動作。然而,根據本揭示之動作可以各種順序及/或同時發生,且具有未於本文中呈現且說明之其他動作。此外,並非所有顯示之動作都要依據本揭示標的而被執行以實作方法400。此外,熟悉該技術領域者將能理解且體認地方法400可經由狀態圖或事件而替代地被表示為一系列之互相關連狀態。
參照圖4,在402,處理器可接收包括從位元組流產生之符記的符記流。在一實施例中,符記流可能已藉由功能性處理引擎根據由處理器接收之位元組流而計算,該功
能性處理引擎可操作地耦接到處理器。替代地,符記流可藉由處理器計算,此係藉由根據所接收的位元組流而執行軟體應用程式而達成。在符記流中的各符記可對應於在位元組流中的位元組,且各符記可包含第一符號,其假設第一位元組子字串匹配位於第一位元組子字串之前的第二位元組子字串時則包括第一位元組子字串之長度,或假設第一位元組子字串不具有匹配第二位元組子字串時則包括文字位元組。符記可包含第二符號,其包括第一位元組子字串與第二位元組子字串之間的位元組距離。若其無匹配第二位元組子字串,則位元組距離為零。
在404,回應於接收符記流,處理器可產生包括節點及邊緣之圖形。在圖形中的各節點可對應於在符記流中的符記。若符記包含指示該符記包含第一位元組子字串與第二匹配位元組子字串之間的資訊之符號時,處理器可產生邊緣以將第一符記與第二符記連接,該第一符記對應於第一位元組子字串之開始位元組而該第二符記對應於第二位元組子字串之開始位元組。處理器可使一編碼成本相關於該邊緣。編碼成本係將與第一符記相關之符號編碼所需多少位元之估計。因此,該圖形中的各邊緣係與估計成本相關。
根據特定標準,在406,處理器可基於該圖形而識別在符記流之起始符記和與符記流之最終符記相關的終端節點之間的路徑。在一實施例中,標準可包括選擇沿著路徑的最少總累積成本之路徑(或用以將與節點相關符號編碼
所使用之位元)的最少成本標準。路徑通過對應於符記之子集的節點,該符記包括向後引用及文字位元組以充分地代表輸入位元組流。
在408,處理器可執行對應於路徑上節點之符記之識別子集的可變長度編碼(諸如霍夫曼編碼),以產生作為輸入資料之壓縮版本之輸出。
圖5A係顯示用於實作包括根據本揭示之一實施例的異質核心之處理裝置的處理器500的微架構之方塊圖。明確地,根據本揭示之至少一實施例,處理器500描述要被包括在處理器中的依序架構核心及暫存器更名邏輯、失序發出/執行邏輯。
處理器500包括耦接到執行引擎單元550之前端單元530,且兩者耦接到記憶體單元570。處理器500可包括精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心、或混合或替代核心類型。仍作為另一選項,處理器500可包括專用核心,諸如例如,網路或通訊核心、壓縮引擎、圖形核心等。在一實施例中,處理器500可係多核心處理器或係多處理器系統之部分。
前端單元530包括耦接到指令快取單元534之分支預測單元532,該指令快取單元534耦接到指令轉譯旁視緩衝器(TLB)536,其耦接到指令提取單元538,其耦接到解碼單元540。解碼單元540(亦知為解碼器)可解碼指令,並產生一或多微操作、微碼進入點、微指令、其他指
令、或其他控制訊號(其解碼自、或其另外反映、或導出自原始指令)作為輸出。可使用各種不同機制來實作解碼器540。適當機制之實例包括,但未限於,查找表、硬體實作、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。指令快取單元534可進一步耦接到記憶體單元570。解碼單元540係耦接到執行引擎單元550中的更名/分配器單元552。
執行引擎單元550包括耦接到退役單元554及一組一或多排程器單元556之更名/分配器單元552。排程器單元556代表任何數量之不同排程器,包括保留站(RS)、中央指令窗等。排程器單元556係耦接到實體暫存器檔案單元558。實體暫存器檔案單元558之各者代表一或多實體暫存器檔案,其不同者儲存一或多不同之資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點等、狀態(例如,其係下一個將被執行指令的位址之指令指標)等。實體暫存器檔案單元558係由退役單元554重疊,以顯示各種其中暫存器更名及失序執行可被實作的方法(例如,使用重排序緩衝器及退役暫存器檔案、使用未來檔案、歷史緩衝器、及退役暫存器檔案;使用暫存器對照表及暫存器池;等)。
在一實作中,處理器500可與參照圖1A所描述之處理器102相同。
普遍而言,架構暫存器係從處理器外部或從程式設計師立場而言為可視的。暫存器並未限於任何已知特定類型
之電路。在彼者能夠如本文所述儲存及提供資料之前提下,各種不同類型之暫存器係適當的。適當暫存器之實例包括,但未限於,專用實體暫存器、使用暫存器更名之動態分配實體暫存器、專用及動態分配實體暫存器之組合等。退役單元554及實體暫存器檔案單元558係耦接到執行叢集560。執行叢集560包括一組一或多執行單元562及一組一或多記憶體存取單元564。執行單元562可執行各種運算(例如,移位、加法、減法、乘法)及對各種類型之資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)運算。
雖然若干實施例可包括數種專用於特定功能或功能組之執行單元,但其他實施例可包括都執行全部功能之僅一個執行單元或多個執行單元。排程器單元556、實體暫存器檔案單元558、及執行叢集560被顯示為可能係複數個,此係因為特定實施例建立個別管線用於特定類型之資料/操作(例如,其各具有其自身排程器單元、實體暫存器檔案單元、及/或執行叢集之純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線-且在個別記憶體存取管線之情形中,特定實施例被實作,其中僅此管線之執行叢集具有記憶體存取單元564)。應理解在使用個別管線處,此類管線之一或多者可係失序發出/執行且剩餘者係依序。
該組記憶體存取單元564係耦接到記憶體單元570,其可包括,舉例而言,資料預取器580、資料TLB單元
572、資料快取單元(DCU)574、及層級2(L2)快取單元576。在一些實施例中,DCU 574亦已知係第一層級資料快取(L1快取)。DCU 574可處置多個未處理快取未中,並繼續用以服務進入的(incoming)儲存及載入。其亦支援維持快取一致性。資料TLB單元572係使用以藉由將虛擬及實體位址空間對映來改善虛擬位址轉譯速度之快取。在一例示性實施例中,記憶體存取單元564可包括載入單元、儲存位址單元、及儲存資料單元,其各者係耦接到記憶體單元570中的資料TLB單元572。L2快取單元576可耦接到一或多其他層級之快取並最後耦接到主記憶體。
在一實施例中,藉由自動地預測程式將要消耗哪個資料,資料預取器580推測地將資料載入/預取到DCU 574。預取可指稱在資料實際地由處理器所請求之前,將儲存在記憶體階層之一記憶體位置(例如,較低層級之快取或記憶體)之資料轉移到較靠近(例如,產出較低存取潛時)處理器之較高層級記憶體位置。更明確地,預取可指稱在處理器發出針對傳回特定資料之請求之前,從較低層級快取/記憶體之一者擷取資料到資料快取及/或預取緩衝器。
處理器500可支援一或多指令集(例如,x86指令集(具有較新版本已加入之若干擴充);加州桑尼維爾的MIPS Technologies之MIPS指令集;加州桑尼維爾的ARM Holdings之ARM指令集(具有諸如NEON之可選附
加擴充))。
應瞭解,核心可支援多執行緒(執行二或更多平行組之操作或執行緒),且可以各種類型之方法來達成上述操作,該等方法包括時間切割多執行緒、同時多執行緒(其中單一實體核心提供邏輯核心給實體核心正同時執行多執行緒的執行緒之各者)、或其(時間切割提取及解碼及之後的同時多執行緒,諸如在Intel®Hyperthreading technology之中一般)組合。
儘管暫存器更名在本內文中被描述成失序執行,但應瞭解暫存器更名可用於依序架構中。雖然所顯示之該處理器的實施例亦包括個別指令及資料快取單元及共享L2快取單元,但替代實施例可具有單一內部快取用於指令及資料兩者,舉例而言,諸如層級1(L1)內部快取、或多層級之內部快取。在若干實施例中,系統可包括內部快取及外部快取之組合,該外部快取在核心及/或處理器之外部。替代地,所有的快取可在核心及/或處理器之外部。
圖5B係顯示依據本揭示之若干實施例而由圖5A之處理裝置500所實作的依序管線及暫存器更名階、失序發出/執行管線之方塊圖。圖5B中的實線框顯示依序管線,而虛線框顯示暫存器更名、失序發出/執行管線。在圖5B中,處理器管線500包括提取級502、長度解碼級504、解碼級506、分配級508、更名級510、排程(亦知為調度(dispatch)或發出(issue))級512、暫存器讀取/記憶體讀取級514、執行級516、寫回/記憶體寫入級518、
異常處理級522、及提交級524。在若干實施例中,502-524級之排序可與所描繪不同並且並不限於圖5B中所示之特定排序。
圖6根據本揭示之一實施例顯示用於包括混合核心的處理器600的微架構之方塊圖。在若干實施例中,可實作根據一實施例之指令以對具有位元組、字、雙字組、四字組等的尺寸及具有諸如單及雙精準整數及浮點資料類型的資料類型之資料元件執行操作。在一實施例中,依序前端601係處理器600提取將被執行之指令並準備彼者稍後用於處理器管線之中的部分。
前端601可包括多個單元。在一實施例中,指令預取器626提取來自記憶體之指令並將彼者饋送給指令解碼器628,其接著將彼者解碼或解譯。舉例而言,在一實施例中,解碼器將所接收指令解碼成一或多操作,其稱為「微指令」或「微運算」(亦稱作微op(micro op)或uop),且其係可由機器執行。在其他實施例中,解碼器將指令剖析成運算碼(opcode)及對應資料與控制欄,其係由微架構使用以執行根據一實施例之操作。在一實施例中,追蹤快取630取得經解碼uop並將其組合成程式有序序列或在uop佇列634中追蹤以用於執行。當追蹤快取630遭遇一複雜指令時,微碼ROM 632提供用以完成該操作所需之uop。
若干指令被轉換成單一微op,然而其他者需要多個微op以完成全部的操作。在一實施例中,若需要多於四
個微op以完成指令,則解碼器628存取微碼ROM 632以執行該指令。針對一個實施例,指令可被解碼成少量的微op用於在指令解碼器628處理。在另一實施例中,若需要數個微碼以完成該操作,則指令可被儲存在微碼ROM 632之內。追蹤快取630係指進入點可編程邏輯陣列(PLA),用以判定用於從微碼ROM 632讀取微碼序列以根據一實施例完成一或多指令之正確微指令指標。在微碼ROM 632結束針對指令之微op的定序之後,機器之前端601繼續從追蹤快取630提取微op。
失序執行引擎603係其中指令被準備用於執行之處。失序執行邏輯具有數個緩衝器以使指令流平順化及重排序指令流,以使指令流向下行進到管線並為了執行被排程時將性能最佳化。分配器邏輯分配各uop所需之機器緩衝器及資源以為了用於執行。暫存器更名邏輯將邏輯暫存器更名成暫存器檔案中的條目。分配器亦將條目分配給兩個uop佇列(一個用於記憶體操作及一個用於非記憶體操作)之一者中的各uop,在指令排程器之前面:記憶體排程器、快速排程器602、緩慢/一般浮點排程器604、及簡易浮點排程器606。Uop排程器602、604、606基於其相依的輸入暫存器運算元源之準備程度及uop完成其操作所需的執行資源之可用性來判定uop何時準備好用以執行。一實施例之快速排程器602可在每半個主時脈週期排程,而其他排程器僅可在每一主處理器時脈週期排程一次。排程器仲裁用以將uop排程用於執行之調度埠。
暫存器檔案608、610坐落在排程器602、604、606及執行方塊611中的執行單元612、614、616、618、620、622、624之間。有個別暫存器檔案608、610分別地用於整數及浮點操作。一實施例之各暫存器檔案608、610亦包括可略過或轉送尚未被寫入、僅完成之結果到暫存器檔案之中給新的相依uop之旁路網路。整數暫存器檔案608及浮點暫存器檔案610亦能夠與彼此通訊資料。針對一實施例,整數暫存器檔案608被分成兩個個別暫存器檔案,一個暫存器檔案用於資料之低階32位元且第二暫存器檔案用於資料之高階32位元。因為浮點指令典型上具有寬度從64到128之運算元,故一實施例之浮點暫存器檔案610具有128位元寬條目。
執行方塊611包含執行單元612、614、616、618、620、622、624,其中該等指令被實際地執行。此段落包括暫存器檔案608、610,其儲存執行微指令所需之整數及浮點資料運算元值。一實施例之處理器600包含數個執行單元:位址產生單元(AGU)612、AGU 614、快速ALU 616、快速ALU 618、緩慢ALU 620、浮點ALU 622、浮點移動單元624。針對一實施例,浮點執行方塊622、624執行浮點、MMX、SIMD、及SSE、或其他操作。一實施例之浮點ALU 622包括64位元乘以64位元浮點除法器,以執行除法、平方根、及餘數微op。針對本揭示之實施例,可以浮點硬體來處置涉及浮點值之指令。
在一實施例中,ALU操作進行到高速ALU執行單元616、618。一實施例之快速ALU 616、618可以半個時脈週期之有效潛時來執行快速操作。針對一實施例,最複雜之整數操作行進到緩慢ALU 620,因為緩慢ALU 620包括用於長潛時類型之操作(諸如,乘式、移位、旗標邏輯、及分支處理)的整數執行硬體。記憶體載入/儲存操作係由AGU 612、614執行。針對一實施例,整數ALU 616、618、620在內文中被描述成對64位元資料運算元執行整數運算。在替代實施例中,ALU 616、618、620可被實作以支援包括16、32、128、256等之各種資料位元。相似地,浮點單元622、624可被實作以支援具有各種寬度之位元的一範圍之運算元。針對一實施例,浮點單元622、624可對128位元寬之緊縮資料運算元運算,並且其結合SIMD及多媒體指令。
在一實施例中,uop排程器602、604、606在已完成執行母負載之前將相依操作調度。由於uop係被推測地排程及執行於處理器600中,故處理器600亦包括用以處置記憶體未中之邏輯。若於資料快取中資料載入未中,則在管線中正在行進中的相依操作可使排程器留有暫時性不正確之資料。回覆機制追蹤並將使用不正確資料之指令重新執行。只有相依操作需要被重播,且獨立操作可被允許完成。處理器的一實施例之排程器及重播機制亦被設計以捕獲用於文字串比對操作之指令序列。
處理器600亦包括用以實作儲存位址預測之邏輯,用
於根據本揭示之實施例將記憶體歧義消除(disambiguation)。在一實施例中,處理器600之執行方塊611可包括儲存位址預測器(未示出),用於實作針對記憶體歧義消除之儲存位址預測。
術語「暫存器」可指稱板上處理器儲存位置,其用作識別運算元之指令的部分。換言之,暫存器可能係可從處理器外部(從程式設計師立場而言)使用的。然而,實施例之暫存器不應被限制於代表一特定類型之電路。反之,實施例之暫存器能夠儲存及提供資料,並執行本文所述之功能。本文所述暫存器可由處理器之中電路使用任何數量之不同技術來實作,諸如專用實體暫存器、使用暫存器更名之動態分配實體暫存器、專用及動態分配實體暫存器之組合等。在一實施例中,整數暫存器儲存三十二位元之整數資料。一實施例之暫存器檔案亦包含八個多媒體SIMD暫存器用於緊縮資料。
針對以下所討論內容,暫存器被理解為設計以保持緊縮資料的資料暫存器,諸如在以來自加州聖克拉拉Intel Corporation之MMX技術所賦能的微處理器中的64位元寬MMXTM暫存器(亦在若干情況中被稱作「mm」暫存器)。此些MMX暫存器(可用於整數及浮點格式兩者)可以隨著SIMD及SSE指令的緊縮資料元件來操作。相似地,相關於SSE2、SSE3、SSE4、或之後(一般稱作「SSEx」)技術之128位元寬XMM暫存器亦可被使用以保持此類緊縮資料運算元。在一實施例中,在儲存緊縮資
料及整數資料之部分,暫存器不需要區分該兩種資料類型。在一實施例中,整數及浮點被包含於同一暫存器檔案中或於不同暫存器檔案中。此外,在一實施例中,浮點及整數資料可被儲存在不同暫存器中或在同一暫存器中。
現在參照圖7,所顯示為說明其中可使用本揭示之實施例的系統700之方塊圖。如圖7所示,多處理器系統700係點對點互連系統,且包括經由點對點互連750耦接之第一處理器770及第二處理器780。雖然僅顯示兩個處理器770、780,但應瞭解本揭示實施例之範圍不應如此局限。在其他實施例中,一或多個附加處理器可存在於給定處理器中。在一實施例中,多處理器系統700可實作如本文所述之混合核心。
處理器770及780被顯示為個別包括整合記憶體控制器單元772及782。處理器770亦包括匯流排控制器單元點對點(P-P)介面776及778作為其一部分;相似地,第二處理器780包括P-P介面786及788。處理器770、780可經由點對點(P-P)介面750使用P-P介面電路778、788來交換資訊。如圖7所示,IMC 772及782將處理器耦接到個別記憶體,亦即記憶體732及記憶體734,其可係局部地附接到個別處理器的主記憶體之部分。
處理器770、780可各經由獨立P-P介面752、754使用點對點介面電路776、794、786、798來與晶片組790交換資訊。晶片組790亦可經由高效能圖形介面739而與高效能圖形電路738交換資訊。
共享快取(未示出)可被包括在任一處理器中或在兩處理器外部,仍經由P-P互連而與處理器連接,以在假設處理器被置於低功率模式之情況下,可使得任一或兩個處理器之局部快取資訊被儲存在共享快取中。
晶片組790可經由介面796而被耦接到第一匯流排716。在一實施例中,第一匯流排716可係週邊組件互連(PCI)匯流排,或諸如PCI快速匯流排或其他第三世代I/O互連匯流排之匯流排,雖然本揭示之範圍並未如此限制。
如於圖7中所顯示,各種I/O裝置714可連同匯流排橋接器718而被耦接到第一匯流排716,該匯流排橋接器718可將第一匯流排716耦接到第二匯流排720。在一實施例中,第二匯流排720可係低接腳數(LPC)匯流排。在一實施例中,可被耦接到第二匯流排720之各種裝置包括,例如,鍵盤及/或滑鼠722、通訊裝置727及可能包括指令/碼及資料730的諸如硬碟機或其他大量儲存裝置之儲存單元728。進一步地,音訊I/O 724可被耦接到第二匯流排720。應注意其它架構係可行。例如,取代圖7之點對點架構,一系統可實作多落點匯流排或其他此類架構。
現在參照圖8,所顯示為其中可操作本揭示之一實施例的系統800之方塊圖。系統800可包括一或多處理器810、815,其耦接到圖形記憶體控制器集線器(GMCH)820。附加處理器815之可選性係以虛線標記於圖8中。
在一實施例中,處理器810、815根據本揭示之實施例而實作混合核心。
各處理器810、815可係某版本之上述電路、積體電路、處理器、及/或矽積體電路。然而應注意,整合圖形邏輯及整合記憶體控制單元不大可能存在處理器810、815中。圖8顯示GMCH 820可耦接到例如可能是動態隨機存取記憶體(DRAM)之記憶體840。至少針對一實施例,DRAM可相關於非揮發性快取。
GMCH 820可係晶片組,或係晶片組之一部分。GMCH 820可與處理器810、815通訊並控制處理器810、815及記憶體840之間的互動。GMCH 820亦可作用為處理器810、815及系統800之其他元件之間的加速匯流排介面。針對至少一實施例,GMCH 820經由多落點匯流排(諸如前端匯流排(FSB)895)而與處理器810、815通訊。
此外,GMCH 820係耦接到顯示器845(諸如平板或觸控螢幕顯示器)。GMCH 820可包括整合圖形加速器。GMCH 820可進一步耦接到輸入/輸出(I/O)控制器集線器(ICH)850,其可被使用以將各種週邊裝置耦接到系統800。為舉例而顯示於圖8之實施例中的係外部圖形裝置860,其可係離散圖形裝置,連同另一週邊裝置870一同耦接到ICH 850。
替代地,附加或不同處理器可存在於系統800中。舉例而言,附加處理器815可包括與處理器810相同之附加
處理器、與處理器810異質或不對稱之附加處理器、加速器(諸如,例如圖形加速器或數位訊號處理(DSP)單元)、現場可編程閘陣列、或任何其他處理器。就包括架構、微架構、熱、功耗特性等之品質度量譜方面而言,處理器810、815之間可有各種差異。此些差異可有效率地在處理器810、815之間呈現為非對稱且異質。針對至少一個實施例,各種處理器810、815可常駐於同一晶粒封裝中。
現在參照圖9,所顯示為其中可操作本揭示之實施例的系統900之方塊圖。圖9顯示處理器970、980。在一實施例中,處理器970、980可實作上述之混合核心。處理器970、980可包括整合記憶體且個別包括I/O控制邏輯(「CL」)972及982,且個別經由在點對點(P-P)介面978及988之間的點對點互連950而與彼此互相通訊。處理器970、980各經由點對點互連952及954透過個別P-P介面976到994及986到998(如所示)而與晶片組990通訊。針對至少一個實施例,CL 972、982可包括整合記憶體控制器單元。CL 972、982可包括I/O控制邏輯。如所描述,記憶體932、934耦接到CL 972、982,且I/O裝置914亦耦接到控制邏輯972、982。舊有I/O裝置915係經由介面996而耦接到晶片組990。
可以許多種不同系統類型來實作實施例。圖10係根據本揭示之實施例的SoC 1000之方塊圖。虛線框係在更先進SoC上之可選特徵。在圖10中,互連單元1012係耦
接到:應用處理器1020,其包括一組一或多核心1002A-N及共享快取單元1006;系統代理單元1010;匯流排控制器單元1016;整合記憶體控制器單元1014;一組或一或多個媒體處理器1018,其可包括整合圖形邏輯1008、用於提供靜態及/或視訊攝影機功能之影像處理器1024、用於提供硬體音訊加速之音訊處理器1026、及用於提供視訊編碼/解碼加速之視訊處理器1028;靜態隨機存取記憶體(SRAM)單元1030;直接記憶體存取(DMA)單元1032;及用於耦接到一或多外部顯示器之顯示器單元1040。在一實施例中,記憶體模組可被包括於整合記憶體控制器單元1014中。在另一實施例中,記憶體模組可被包括於SoC 1000之可被使用以存取及/或控制記憶體的一或多其他組件中。應用處理器1020可包括儲存位址預測子(predictor),用於實作如本文實施例所述之混合核心。
記憶體階層包括核心內之一或多層級之快取、一組或一或多共享快取單元1006、及耦接到該組整合記憶體控制器單元1014的外部記憶體(未示出)。該組共享快取單元1006可包括一或多中階快取,諸如層級2(L2)、層級3(L3)、層級4(L4)、或其他層級之快取、最後階快取(LLC)、及/或其組合。
在若干實施例中,核心1002A-N之一或多者能夠執行多執行緒。系統代理1010包括該些協調及操作核心1002A-N之組件。系統代理單元1010可例如包括功率控
制單元(PCU)及顯示器單元。PCU可係或可包括用於調節核心1002A-N之功率狀態所需之邏輯及組件和整合圖形邏輯1008。顯示器單元係用於驅動一或多外部連接顯示器。
在架構及/或指令集之方面,核心1002A-N可係同質或異質。舉例而言,若干核心1002A-N可係依序而它者為失序。作為另一實例,核心1002A-N之二或更多者可能能夠進行相同指令集之執行,而它者可能僅能夠進行該指令集之子集或不同指令集之執行。
應用處理器1020可係通用處理器,諸如CoreTM i3、i5、i7、2雙及四、XeonTM、ItaniumTM、AtomTM或QuarkTM處理器,其可從加州聖克拉拉IntelTM公司取得。替代地,應用處理器1020可來自另一公司,諸如ARM HoldingsTM有限股份公司、MIPSTM等。應用處理器1020可係專用處理器,舉例而言,諸如網路或通訊處理器、壓縮引擎、圖形處理器、協同處理器、嵌入式處理器或相似者。應用處理器1020可被實作在一或多晶片上。使用舉例而言諸如BiCMOS、CMOS、或NMOS之數種製程技術之任意者,應用處理器1020可係一或多基板之一部分及/或可被實作在一或多基板上。
圖11係根據本揭示的系統單晶片(SoC)設計的實施例之方塊圖。作為明確說明性實例,SoC 1100可被包括在使用者設備(UE)中。在一實施例中,UE指稱可由終端使用者使用以通訊之任何裝置,諸如手持電話、智慧型
手機、平板電腦、超薄筆記型電腦、具有寬頻配接器之筆記型電腦、或任何其他相似之通訊裝置。UE通常連接到基地台或節點,其潛在本質地對應於GSM網路中的移動電台(MS)。
在此SoC 1100包括2個核心-1106及1107。核心1106及1107可能遵從諸如AMD公司之以Intel®架構CoreTM為基的處理器之指令集架構。(AMD)處理器、以MIPS為基處理器、以ARM為基處理器設計、或其客戶、以及其被授權人或採用者。核心1106及1107係耦接到快取控制1108,其結合匯流排介面單元1109其L2快取1110以與系統1100之其他部分通訊。互連1111包括晶片上互連,諸如IOSF、AMBA、或其他上述互連,其潛在地實作本揭示之一或多態樣。在一實施例中,核心1106、1107可實作於本文實施例中所述之混合核心。
互連1111提供到達其他組件之通訊通道,該等其他組件諸如:用戶身分模組(SIM)1130,以與SIM卡介接、啟動ROM 1135,以保持啟動碼(boot code)用於由核心1106及1107執行,用以將SoC 1100初始化及啟動、SDRAM控制器1140,以與外部記憶體(例如,DRAM 1160)介接、快閃控制器1145,以與非揮發性記憶體(例如快閃記憶體1165)介接、週邊控制1150(例如,序列週邊介面),以與週邊設備介接、視訊編解碼器1120及視訊介面1125,以顯示及接收輸入(例如,觸控賦能之輸入)、GPU 1115,以執行與圖形相關計算、等
等。此些介面之任意者可納入本文揭示所述之態樣。此外,系統1100顯示用於通訊之週邊設備,諸如藍芽模組1170、3G數據機1175、GPS 1180、及Wi-Fi 1185。
圖12顯示在計算機系統1200的實例形式中之機器的圖式表示法,在該計算機系統1200中一組指令可被執行,該指令用於導致該機器執行本文所討論方法之任一或更多者。在替代實施例中,機器可連接(例如,連成網路)到其他在LAN、內網、商際網路、或網際網路中的機器。機器可能以用戶-伺服器網路環境中的伺服器或用戶裝置之能力來操作,或作為同級(或分散式)網路環境中的同級機器。機器可係個人電腦(PC)、平板PC、機上盒(STB)、個人數位助理(PDA)、行動電話、網路設備、伺服器、網路路由器、切換器或橋接器、或任何能夠執行(序列性或其他)指令集之機器,該指令集指明將由該機器所採取之動作。進一步,雖然僅顯示單一機器,但術語「機器」亦應被理解為包括獨立或聯合執行一(或多)指令集用以執行本文所討論之方法之任一或更多者的機器之任何組合。
計算機系統1200包括處理裝置1202、主記憶體1204(例如,唯讀記憶體(ROM)、快閃記憶體、動態隨機存取記憶體(DRAM)(諸如同部DRAM(SDRAM)或DRAM(RDRAM)等))、靜態記憶體1206(例如,快閃記憶體、靜態隨機存取記憶體(SRAM)等)、及資料儲存裝置1218,其經由匯流排1230而與它者通訊。
處理裝置1202代表諸如微處理器、中央處理單元等之一或多通用處理裝置。更明確而言,處理裝置可能係複雜指令集計算(CISC)微處理器、精簡指令集計算機(RISC)微處理器、極長指令字(VLIW)微處理器、或實作其他指令集之處理器、或實作指令集之組合的處理器。處理裝置1202亦可係諸如特殊應用積體電路(ASIC)、現場可編程閘極陣列(FPGA)、數位訊號處理器(DSP)、網路處理器等之一或多專用處理裝置。在一實施例中,處理裝置1202可包括一或多處理核心。處理裝置1202經組態以執行處理邏輯1226,用於執行本文所述之操作及步驟。在一實施例中,處理裝置1202係與參照圖1如同本揭示實施例所述之處理器架構100相同。
計算機系統1200可進一步包括可通訊地耦接到網路1220之網路介面裝置1208。計算機系統1200亦可包括視訊顯示器單元1210(例如,液晶顯示器(LCD)或陰極射線管(CRT))、文數字輸入裝置1212(例如,鍵盤)、游標控制裝置1214(例如,滑鼠)、及訊號產生裝置1216(例如,揚聲器)。此外,計算機系統1200可包括圖形處理單元1222、視訊處理單元1228、及音訊處理單元1232。
資料儲存裝置1218可包括機器可讀取儲存媒體1224,在其上儲存實作本文所述功能之方法的任一或多者之軟體1226,該等功能之方法諸如針對如上述之記憶體歧義消除實作儲存位址預測。在其由計算機系統1200執
行期間,軟體1226亦可(完全或至少部分地)常駐於主記憶體1204之內作為指令1226及/或常駐於處理裝置1202之內作為處理邏輯1226;主記憶體1204及處理裝置1202亦構成機器可存取儲存媒體。
機器可讀取儲存媒體1224亦可被使用以儲存實作儲存位址預測用於混合核心之指令1226,諸如根據本揭示之實施例所述一般。雖然於例示實施例中機器可存取儲存媒體1128係顯示為單一媒體,但術語「機器可存取儲存媒體」應被理解為包括單一媒體或多個媒體(例如,集中或分散資料庫、及/或相關快取及伺服器),其儲存該一或多指令集。術語「機器可存取儲存媒體」應被理解為包括任何能夠儲存、編碼、或攜帶用於由機器執行之指令集的媒體,且其將導致機器執行本揭示之方法的任一或更多者。術語「機器可存取儲存媒體」應據此被理解為包括,但未限於,固態記憶體、及光學及磁性媒體。
以下實例關於進一步實施例。實例1係一種處理裝置,包含:儲存裝置,用以儲存資料;及處理器,其可操作地耦接到該儲存裝置,該處理器用以:接收包含基於包含複數個位元組的位元組流所產生的複數個符記之符記流,其中該符記流中的各符記至少包含一與該位元組流中個別位元組相關之符號,且其中該至少一符號代表該個別位元組、從該個別位元組開始之第一位元組字串的長度、或該第一位元組字串及匹配第二位元組字串之間的位元組距離之一者;基於該符記流而產生包含複數個節點及邊緣
的圖形,其中該符記流中的各符記係相關於藉由至少一邊緣而連接到另一節點之個別節點,且其中該至少一邊緣係相關於成本函數以將儲存在該各符記中之該至少一符號編碼;基於該圖形而識別在第一節點及終端節點之間的路徑,該第一節點與該符記流之起始符記相關而該終端節點與該符記流之最終符記相關,其中該路徑包含節點之子集及連接該節點之子集的邊緣;及執行與該節點之子集相關的符記之子集的可變長度編碼,以產生輸出資料。
在實例2中,實例1之標的可選地提供,該處理器進一步用以接收包含該複數個位元組之該位元組流作為輸入資料,其中該處理器進一步用以儲存該輸出資料於該儲存裝置中,且其中該可變長度編碼包含霍夫曼編碼。
在實例3中,實例1及2的任意者之標的可選地提供,該第一位元組字串包含從該個別位元組開始之至少三個位元組。
在實例4中,實例1之標的可進一步包含功能性處理單元,其可操作地耦接到該處理器,該功能性處理單元用以:接收來自該處理器之該位元組流;及產生該符記流,其中該符記流包含至少與該位元組流中位元組之數量一樣多的符記。
在實例5中,實例1及4的任意者之標的可選地提供,該功能性處理單元用以:針對該位元組流中的各位元組,判定從該個別位元組之第一位元組位置開始的該第一位元組字串是否匹配從第二位元組位置開始之該第二位元
組字串,該第二位元組位置係在該第一位元組位置之前;回應於該第一位元組字串匹配該第二位元組字串之判定,產生包含第一符號及第二符號之符記,該第一符號包含該第一位元組字串之該長度而該第二符號包含在該第一位元組位置及該第二位元組位置之間的該位元組距離;回應於該第一位元組字串不匹配另一位元組字串之判定,產生包含包括該各位元組之該第一符號或包括一個零之第二符號之至少一者之該符記;及產生包含該符記之該符記流。
在實例6中,實例5之標的可選地提供,判定該第一位元組字串是否匹配該第二位元組字串包含判定匹配該第一位元組字串之最長位元組字串。
在實例7中,實例5之標的可選地提供,該功能性處理單元進一步用以產生與該各位元組相關聯之至少一附加符記,且其中判定該第一位元組字串是否匹配該第二位元組字串包含判定用於預判定字串長度之到該第一位元組字串的最短位元組距離,且其中兩位元組字串之間的該位元組距離被界定為該兩位元組字串之開始位元組之間的位元組距離。
在實例8中,實例1之標的可選地提供,用以將該成本函數關聯於該至少一符號之編碼,該處理器用以:判定包含該至少一符號的該個別符記之第一符記位置;及計算該成本函數作為在該符記流中該第一符記位置之函數。
在實例9中,實例1及8的任意者之標的可選地提供,該成本函數界定位元之數量,採用該等位元以編碼該
至少一符號,且其中除了用以將該至少一符號編碼所使用的位元之外,該經計算之成本函數包含額外位元。
在實例10中,實例9之標的可選地包括,該處理器基於最少成本標準用以識別該路徑。
在實例11中,實例10之標的可選地包括,該處理器進一步用以:回應於已執行該可變長度編碼,判定用以將儲存在該符記之子集裡各符記中的該至少一符號編碼所使用之位元的數量;更新該成本函數用以基於所使用的位元之該數量來將儲存在該符記之子集裡各符記中的該至少一符號編碼;基於該圖形而識別在該第一節點及該終端節點之間的第二路徑,其中該第二路徑包含節點之第二子集;及執行與該節點之第二子集相關的符記之第二子集的該可變長度編碼,以產生第二輸出資料。
在實例12中,實例11之標的可選地包括,該處理器進一步用以更新該成本函數,直到用以將該至少一符號編碼所使用之位元的該數量收斂到一固定數量。
實例13係一種方法,包含:藉由處理器接收包含基於包含複數個位元組的位元組流所產生的複數個符記之符記流,其中該符記流中的各符記至少包含一與該位元組流中個別位元組相關之符號,且其中該至少一符號代表該個別位元組、從該個別位元組開始之第一位元組字串的長度、或該第一位元組字串及匹配第二位元組字串之間的位元組距離之一者;基於該符記流而產生包含複數個節點及邊緣的圖形,其中該符記流中的各符記係相關於藉由至少
一邊緣而連接到另一節點之個別節點,且其中該至少一邊緣係相關於成本函數以將儲存在該各符記中之該至少一符號編碼;基於該圖形而識別在第一節點及終端節點之間的路徑,該第一節點與該符記流之起始符記相關而該終端節點與該符記流之最終符記相關,其中該路徑包含節點之子集及連接該節點之子集的邊緣;及執行與該節點之子集相關的符記之子集的可變長度編碼,以產生輸出資料。
在實例14中,實例13之標的可進一步包含:接收包含該複數個位元組之該位元組流作為輸入資料;及儲存該輸出資料於儲存裝置中。
在實例15中,實例13及14的任意者之標的可選地提供,該第一位元組字串包含從該個別位元組開始之至少三個位元組。
在實例16中,實例13之標的可進一步包含:傳輸該位元組流到功能性處理單元,其中該功能性處理單元用以:針對該位元組流中的各位元組,判定從該個別位元組之第一位元組位置開始的該第一位元組字串是否匹配從第二位元組位置開始之該第二位元組字串,該第二位元組位置係在該第一位元組位置之前;回應於該第一位元組字串匹配該第二位元組字串之判定,產生包含第一符號及第二符號之符記,該第一符號包含該第一位元組字串之該長度而該第二符號包含在該第一位元組位置及該第二位元組位置之間的該位元組距離;回應於該第一位元組字串不匹配另一位元組字串之判定,產生包含包括該各位元組之該第
一符號或包括一個零之第二符號之至少一者之該符記;及產生包含該符記之該符記流;及接收來自該功能性處理單元之該符記流。
在實例17中,實例13及16的任意者之標的可選地提供,用以判定該第一位元組字串是否匹配該第二位元組字串,該功能性處理單元係用以判定匹配該第一位元組字串之最長位元組字串。
在實例18中,實例13之標的可進一步包含:判定包含該至少一符號的該個別符記之第一符記位置;及計算該成本函數作為在該符記流中該第一符記位置之函數。
在實例19中,實例13及18的任意者之標的可進一步包含基於最少成本標準以識別該路徑。
在實例20中,實例19之標的可進一步包含:回應於已執行該可變長度編碼,判定用以將儲存在該符記之子集裡各符記中的該至少一符號編碼所使用之位元的數量;更新該成本函數用以基於所使用的位元之該數量來將儲存在該符記之子集裡各符記中的該至少一符號編碼;基於該圖形而識別在該第一節點及該終端節點之間的第二路徑,其中該第二路徑包含節點之第二子集;及執行與該節點之第二子集相關的符記之第二子集的該可變長度編碼,以產生第二輸出資料。
實例21係一種設備,包含:用於執行實例13至15的任意者之標的之機構。
實例22係一種機器可讀取非暫態媒體,當所儲存於
其上之程式碼被執行時,其所執行的操作包含:藉由該處理器接收包含基於包含複數個位元組的位元組流所產生的複數個符記之符記流,其中該符記流中的各符記至少包含一與該位元組流中個別位元組相關之符號,且其中該至少一符號代表該個別位元組、從該個別位元組開始之第一位元組字串的長度、或該第一位元組字串及匹配第二位元組字串之間的位元組距離之一者;基於該符記流而產生包含複數個節點及邊緣的圖形,其中該符記流中的各符記係相關於藉由至少一邊緣而連接到另一節點之個別節點,且其中該至少一邊緣係相關於成本函數以將儲存在該各符記中之該至少一符號編碼;基於該圖形而識別在第一節點及終端節點之間的路徑,該第一節點與該符記流之起始符記相關而該終端節點與該符記流之最終符記相關,其中該路徑包含節點之子集及連接該節點之子集的邊緣;及執行與該節點之子集相關的符記之子集的可變長度編碼,以產生輸出資料。
在實例23中,實例22之標的可進一步包含:接收包含該複數個位元組之該位元組流作為輸入資料;及儲存該輸出資料於儲存裝置中。
實例24係一種系統單晶片(SoC),包含:用以接收包含複數個位元組之位元組流的處理器;及功能性處理單元,其可操作地耦接到處理器,用以接收該位元組流;針對該位元組流中的各位元組,判定從該各位元組之第一位元組位置開始的第一位元組字串是否匹配從第二位元組位
置開始之第二位元組字串,該第二位元組位置係在該第一位元組位置之前;回應於該第一位元組字串匹配該第二位元組字串之判定,產生包含第一符號及第二符號之符記,該第一符號包含該第一位元組字串之長度而該第二符號包含在該第一位元組位置及該第二位元組位置之間的位元組距離;回應於該第一位元組字串不匹配另一位元組字串之判定,產生包含包括該位元組之該第一符號及包括一個零之第二符號之該符記;及針對該處理器,產生包含該符記之該符記流。
在實例25中,實例24之標的可選地提供,該處理器用以:接收來自該功能性處理單元之該符記流;基於該符記流而產生包含複數個節點及邊緣的圖形,其中該符記流中的各符記係相關於藉由至少一邊緣而連接到另一節點之個別節點,且其中該至少一邊緣係相關於成本函數以將儲存在該符記中之該第一符號及該第二符號編碼;基於該圖形而識別在第一節點及終端節點之間的路徑,該第一節點與該符記流之起始符記相關而該終端節點與該符記流之最終符記相關,其中該路徑包含節點之子集及連接該節點之子集的邊緣;及執行與該節點之子集相關的符記之子集的可變長度編碼,以產生輸出資料。
雖然本揭示參照有限數目之實施例而被描述,但熟悉該技術領域者將能瞭解從其中衍伸出的各種修改及變體。其目的在於所附申請專利範圍涵蓋落入本揭示之範圍及真實精神之內的所有此類修改及變體。
從創造到模擬至製造,一種設計可能經歷許多階段。代表一種設計之資料可以數種方式來表示該設計。首先,如在模擬中為有用地,可使用硬體描述語言或另一種功能性描述語言來表示該硬體。額外地,具有邏輯及/或電晶體閘極之電路層級模型可在設計製程之某階段被產生。此外,大部分設計在某階段時,會達到代表在硬體模型中各種裝置之實體配置的一層級之資料。在習用半導體製造技術被使用之情形中,代表硬體模型之資料可能係指明各種特徵在不同遮罩層上之存在或不存在之資料,此等遮罩層係用於製造該積體電路之遮罩。在任何設計表示法中,該資料可能被儲存在任何型態之機器可讀取媒體中。記憶體或諸如光碟之磁性或光學儲存器可能係機器可讀取媒體,用以儲存經由光學或電波傳輸之資訊,該電波被調變或另外產生用以傳輸此類資訊。當指示或攜帶該碼或設計之電載波被傳輸(到執行電性訊號之複製、緩衝、或再傳輸之程度)時,新副本被建立。因此,通訊供應者或網路供應者可在有形、機器可讀取媒體上儲存(至少暫時地)一物件(article),諸如編碼入載波之中的資訊、本揭示實施例之體現技術。
本文使用之模組可指稱硬體、軟體、及/或韌體之任意組合。舉例而言,模組包括硬體(諸如,微控制器),其相關於非暫態媒體,用以儲存適配(adapted)以將由微控制器所執行之碼。因此,在一實施例中引用為模組係指稱硬體,其明確地組態以辨識出及/或執行將被保持在非
暫態媒體上之碼。此外在另一實施例中,模組之使用指稱包括碼之非暫態媒體,其明確地適配成由微控制器執行,以執行預定操作。且如同可被推斷的,仍在另一實施例中,術語模組(在此實例中)可指稱微控制器及非暫態媒體之組合。被顯示為獨立之模組邊界(module boundary)一般通常有差異且潛在地重疊。舉例而言,第一及第二模組可共享硬體、軟體、韌體、或其組合,雖然潛在地保留若干獨立硬體、軟體、或韌體。在一實施例中,術語邏輯之使用包括硬體,諸如電晶體、暫存器、或諸如可編程邏輯裝置之其他硬體。
用語「組態」之使用在一實施例中指稱配置、放置在一起、生產、提供出售、進口及/或設計設備、硬體、邏輯、或元件以執行指定或判定之工作。在此實例中,若其被設計、耦接、及/或互連以執行該指定工作,則其未被操作之設備或元件仍經「組態」以執行指定工作。作為純粹顯示性之實例,邏輯閘可在操作期間提供0或1。但經「組態」以提供賦能信號給蝕中之邏輯閘並未包括每一個可提供1或0的潛在邏輯閘。反而該邏輯閘係以某方式耦接之一者,其在操作期間該1或0輸出係用以賦能該時鐘。應注意再一次地術語「組態」之使用不需要操作,但反之專注在設備、硬體、及/或元件之潛伏狀態,其中該設備、硬體、及/或元件之潛伏狀態係經設計以當該設備、硬體、及/或元件正在被操作時用以執行特定工作。
此外,在一實施例中,用語「用以」、「能夠/用
以」、及/或「可操作以」之使用指稱若干以如此方式設計以賦能設備、邏輯、硬體、及/或元件以特殊方式之使用的設備、邏輯、硬體、及/或元件。應注意以上用語「用以」、「能夠/用以」、或「可操作以」之使用在一實施例中指稱設備、邏輯、硬體、及/或元件之潛伏狀態,其中設備、邏輯、硬體、及/或元件並未被操作,但其被設計成以如此方式以賦能設備的以特殊方式之使用。
如本文中所使用,一值(value)包括數字、狀態、邏輯狀態、或二進制邏輯狀態之任何已知表示法。通常,邏輯層級、邏輯值或邏輯地值之使用亦是指稱係1及0的,其簡單表示二進制邏輯狀態。舉例而言,1指稱高邏輯層級且0指稱低邏輯層級。在一實施例中,儲存單元,諸如電晶體或快閃單元,可能能夠保持單一邏輯值或多個邏輯值。然而,在計算機系統中值之其他表示法已被使用。舉例而言,十進位數字十亦可被表示為910之二進制值及A之十六進制字母。因此,一值包括能夠被保持在計算機系統中的任何資訊表示法。
此外,可由值或值之部分來表示狀態。舉例而言,第一值(諸如,邏輯1)可代表預設值或初始值,而第二值(諸如,邏輯0)可代表非預設狀態。此外,術語重設及設定在一實施例中分別指稱預設及更新值或狀態。舉例而言,預設值潛在包括高邏輯值,亦即,重設;而更新值潛在包括低邏輯值,亦即,設定。應注意,該值之任意組合可被使用以代表任何數量之狀態。
以上陳述之方法、硬體、軟體、韌體或碼之實施例可經由儲存在機器可存取、機器可讀取、計算機可存取、或計算機可讀取媒體上之指令或碼(其係可由處理元件執行的)而被實作。非暫態機器可存取/可讀取媒體包括提供(亦即,儲存及/或傳輸)為由機器可讀取形式的資訊之任何機制。例如,非暫態機器可存取媒體包括隨機存取記憶體(RAM),諸如靜態RAM(SRAM)或動態RAM(DRAM);ROM;磁性或光學儲存媒體;快閃記憶體裝置;電性儲存裝置;光學儲存裝置;音響儲存裝置;其他形式之儲存裝置用於保持從暫態(傳播)訊號(例如,載波、紅外線訊號、數位訊號)接收到的資訊;等,其將與可自其接收資訊的非暫態媒體做區隔。
所使用以將邏輯編程以執行本揭示之實施例的指令可被儲存在系統中的記憶體裡,諸如DRAM、快取、快閃記憶體或其他儲存器。此外,該指令可經由網路或藉由使用其他計算機可讀取媒體來分配。因此機器可讀取媒體可包括任何用於儲存或傳輸資訊於可由機器(例如,計算機)讀取之格式中的機制,但未限於軟碟、光碟(optical disc)、光碟(Compact Disc)、唯讀記憶體(CD-ROM)、及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、電性可抹除可程式化唯讀記憶體(EEPROM)、磁或光卡、快閃記憶體、或經由電性、光學、音響或其他形式之傳播訊號(例如,載波、紅外線訊
號、數位訊號等)透過網際網路傳輸資訊所使用的有形、機器可讀取儲存器。據此,計算機可讀取媒體包括任何類型之有形機器可讀取媒體,其適當用於儲存或傳輸為可由機器(例如,計算機)讀取格式之電子指令或資訊。
全文說明書中所提及之「一個實施例」或「實施例」代表與該實施例一同被說明之特定特徵、結構、或特性係包括在本揭示之至少一實施例中。因此,「在一個實施例中」或「在實施例中」之該等用語在說明書全文中各處的出現並不全然指向該同一實施例。此外,在一或多實施例中,特定特徵、結構、或特徵可以任意適當方式結合。
在前面之說明書中,參考特定例式性實施例而給定詳細說明。然而將趨向明顯地,在沒有背離所附申請專利範圍中所闡述之本揭示的廣義精神與範疇的前提下,可對其作出各種修改及變化。該說明書與圖式據此將被理解為係說明性意義,而非限制性意義的。此外,上文中實施例之使用及其他例示性言語並不全然指向相同實施例或相同實例,而是可能指向不同且獨立之實施例,但也潛在地指向同一實施例。
100‧‧‧處理裝置
102‧‧‧處理器
104‧‧‧儲存裝置
106‧‧‧符記產生器
108‧‧‧符記選擇器
110‧‧‧霍夫曼編碼器
Claims (22)
- 一種用以執行資料壓縮的處理裝置,包含:儲存裝置,用以儲存資料;及處理器,其可操作地耦接到該儲存裝置,該處理器用以:接收包含基於包含複數個位元組的位元組流所產生的複數個符記之符記流,其中該符記流中的各符記至少包含一與該位元組流中個別位元組相關之符號,且其中該至少一符號代表該個別位元組、從該個別位元組開始之第一位元組字串的長度、或該第一位元組字串及匹配第二位元組字串之間的位元組距離之一者;基於該符記流而產生包含複數個節點及邊緣的圖形,其中該符記流中的各符記係相關於藉由至少一邊緣而連接到另一節點之個別節點,且其中該至少一邊緣係相關於成本函數以將儲存在該各符記中之該至少一符號編碼;基於該圖形而識別在第一節點及終端節點之間的路徑,該第一節點與該符記流之起始符記相關而該終端節點與該符記流之最終符記相關,其中該路徑包含節點之子集及連接該節點之子集的邊緣;及執行與該節點之子集相關的符記之子集的可變長度編碼,以產生輸出資料。
- 如申請專利範圍第1項的處理裝置,其中該處理器進一步用以接收包含該複數個位元組之該位元組流作為輸入資料,其中該處理器進一步用以儲存該輸出資料於該儲 存裝置中,且其中該可變長度編碼包含霍夫曼編碼。
- 如申請專利範圍第1項的處理裝置,其中該第一位元組字串包含從該個別位元組開始之至少三個位元組。
- 如申請專利範圍第1項的處理裝置,其進一步包含:功能性處理單元,其可操作地耦接到該處理器,該功能性處理單元用以:接收來自該處理器之該位元組流;及產生該符記流,其中該符記流包含至少與該位元組流中位元組之數量一樣多的符記。
- 如申請專利範圍第4項的處理裝置,其中該功能性處理單元用以:針對該位元組流中的各位元組,判定從該個別位元組之第一位元組位置開始的該第一位元組字串是否匹配從第二位元組位置開始之該第二位元組字串,該第二位元組位置係在該第一位元組位置之前;回應於該第一位元組字串匹配該第二位元組字串之判定,產生包含第一符號及第二符號之符記,該第一符號包含該第一位元組字串之該長度而該第二符號包含在該第一位元組位置及該第二位元組位置之間的該位元組距離;回應於該第一位元組字串不匹配另一位元組字串之判定,產生包含包括該各位元組之該第一符號或包括一個零之第二符號之至少一者之該符記;及產生包含該符記之該符記流。
- 如申請專利範圍第5項的處理裝置,其中判定該第一位元組字串是否匹配該第二位元組字串包含判定匹配該第一位元組字串之最長位元組字串。
- 如申請專利範圍第6項的處理裝置,其中該功能性處理單元進一步用以產生與該各位元組相關聯之至少一附加符記,且其中判定該第一位元組字串是否匹配該第二位元組字串包含判定用於預判定字串長度之到該第一位元組字串的最短位元組距離,且其中兩位元組字串之間的該位元組距離被界定為該兩位元組字串之開始位元組之間的位元組距離。
- 如申請專利範圍第1項的處理裝置,其中用以將該成本函數關聯於該至少一符號之編碼,該處理器用以:判定包含該至少一符號的該個別符記之第一符記位置;及計算該成本函數作為在該符記流中該第一符記位置之函數。
- 如申請專利範圍第8項的處理裝置,其中該成本函數界定位元之數量,採用該位元以編碼該至少一符號,且其中除了用以將該至少一符號編碼所使用的位元之外,該經計算之成本函數包含額外位元。
- 如申請專利範圍第9項的處理裝置,其中該處理器基於最少成本標準用以識別該路徑。
- 如申請專利範圍第10項的處理裝置,其中該處理器進一步用以: 回應於已執行該可變長度編碼,判定用以將儲存在該符記之子集裡各符記中的該至少一符號編碼所使用之位元的數量;更新該成本函數用以基於所使用的位元之該數量來將儲存在該符記之子集裡各符記中的該至少一符號編碼;基於該圖形而識別在該第一節點及該終端節點之間的第二路徑,其中該第二路徑包含節點之第二子集;及執行與該節點之第二子集相關的符記之第二子集的該可變長度編碼,以產生第二輸出資料。
- 如申請專利範圍第11項的處理裝置,其中該處理器進一步用以更新該成本函數,直到用以將該至少一符號編碼所使用之位元的該數量收斂到一固定數量。
- 一種用以執行資料壓縮的方法,包含:藉由處理器接收包含基於包含複數個位元組的位元組流所產生的複數個符記之符記流,其中該符記流中的各符記至少包含一與該位元組流中個別位元組相關之符號,且其中該至少一符號代表該個別位元組、從該個別位元組開始之第一位元組字串的長度、或該第一位元組字串及匹配第二位元組字串之間的位元組距離之一者;基於該符記流而產生包含複數個節點及邊緣的圖形,其中該符記流中的各符記係相關於藉由至少一邊緣而連接到另一節點之個別節點,且其中該至少一邊緣係相關於成本函數以將儲存在該各符記中之該至少一符號編碼;基於該圖形而識別在第一節點及終端節點之間的路 徑,該第一節點與該符記流之起始符記相關而該終端節點與該符記流之最終符記相關,其中該路徑包含節點之子集及連接該節點之子集的邊緣;及執行與該節點之子集相關的符記之子集的可變長度編碼,以產生輸出資料。
- 如申請專利範圍第13項的方法,進一步包含:接收包含該複數個位元組之該位元組流作為輸入資料;及儲存該輸出資料於儲存裝置中。
- 如申請專利範圍第14項的方法,其中該第一位元組字串包含從該個別位元組開始之至少三個位元組。
- 如申請專利範圍第13項的方法,進一步包含:傳輸該位元組流到功能性處理單元,其中該功能性處理單元用以:針對該位元組流中的各位元組,判定從該個別位元組之第一位元組位置開始的該第一位元組字串是否匹配從第二位元組位置開始之該第二位元組字串,該第二位元組位置係在該第一位元組位置之前;回應於該第一位元組字串匹配該第二位元組字串之判定,產生包含第一符號及第二符號之符記,該第一符號包含該第一位元組字串之該長度而該第二符號包含在該第一位元組位置及該第二位元組位置之間的該位元組距離;回應於該第一位元組字串不匹配另一位元組字串之判定,產生包含包括該各位元組之該第一符號或包括一個零 之第二符號之至少一者之該符記;及產生包含該符記之該符記流;及接收來自該功能性處理單元之該符記流。
- 如申請專利範圍第16項的方法,其中用以判定該第一位元組字串是否匹配該第二位元組字串,該功能性處理單元係用以判定匹配該第一位元組字串之最長位元組字串。
- 如申請專利範圍第13項的方法,進一步包含:判定包含該至少一符號的該個別符記之第一符記位置;及計算該成本函數作為在該符記流中該第一符記位置之函數。
- 如申請專利範圍第18項的方法,進一步包含:基於最少成本標準識別該路徑。
- 如申請專利範圍第19項的方法,進一步包含:回應於已執行該可變長度編碼,判定用以將儲存在該符記之子集裡各符記中的該至少一符號編碼所使用之位元的數量;更新該成本函數用以基於所使用的位元之該數量來將儲存在該符記之子集裡各符記中的該至少一符號編碼;基於該圖形而識別在該第一節點及該終端節點之間的第二路徑,其中該第二路徑包含節點之第二子集;及執行與該節點之第二子集相關的符記之第二子集的該可變長度編碼,以產生第二輸出資料。
- 一種系統單晶片(SoC),包含:用以接收包含複數個位元組之位元組流的處理器;及功能性處理單元,其可操作地耦接到處理器,用以接收該位元組流;針對該位元組流中的各位元組,判定從該各位元組之第一位元組位置開始的第一位元組字串是否匹配從第二位元組位置開始之第二位元組字串,該第二位元組位置係在該第一位元組位置之前;回應於該第一位元組字串匹配該第二位元組字串之判定,產生包含第一符號及第二符號之符記,該第一符號包含該第一位元組字串之長度而該第二符號包含在該第一位元組位置及該第二位元組位置之間的位元組距離;回應於該第一位元組字串不匹配另一位元組字串之判定,產生包含包括該各位元組之該第一符號及包括一個零之第二符號之該符記;及針對該處理器,產生包含該符記之該符記流。
- 如申請專利範圍第21項的系統單晶片(SoC),其中該處理器用以:接收來自該功能性處理單元之該符記流;基於該符記流而產生包含複數個節點及邊緣的圖形,其中該符記流中的各符記係相關於藉由至少一邊緣而連接到另一節點之個別節點,且其中該至少一邊緣係相關於成本函數以將儲存在該符記中之該第一符號及該第二符號編碼; 基於該圖形而識別在第一節點及終端節點之間的路徑,該第一節點與該符記流之起始符記相關而該終端節點與該符記流之最終符記相關,其中該路徑包含節點之子集及連接該節點之子集的邊緣;及執行與該節點之子集相關的符記之子集的可變長度編碼,以產生輸出資料。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/866,115 US9537504B1 (en) | 2015-09-25 | 2015-09-25 | Heterogeneous compression architecture for optimized compression ratio |
US14/866,115 | 2015-09-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201720063A TW201720063A (zh) | 2017-06-01 |
TWI692213B true TWI692213B (zh) | 2020-04-21 |
Family
ID=57682461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105125634A TWI692213B (zh) | 2015-09-25 | 2016-08-11 | 用以執行資料壓縮的處理裝置和方法以及系統單晶片(SoC) |
Country Status (5)
Country | Link |
---|---|
US (2) | US9537504B1 (zh) |
CN (1) | CN107925420B (zh) |
DE (1) | DE112016004324T5 (zh) |
TW (1) | TWI692213B (zh) |
WO (1) | WO2017052758A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9378560B2 (en) | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
US9537504B1 (en) * | 2015-09-25 | 2017-01-03 | Intel Corporation | Heterogeneous compression architecture for optimized compression ratio |
US10311074B1 (en) | 2016-12-15 | 2019-06-04 | Palantir Technologies Inc. | Identification and compiling of information relating to an entity |
US10235461B2 (en) | 2017-05-02 | 2019-03-19 | Palantir Technologies Inc. | Automated assistance for generating relevant and valuable search results for an entity of interest |
US20180357287A1 (en) * | 2017-06-10 | 2018-12-13 | ScaleFlux, Inc. | Hybrid software-hardware implementation of edit distance search |
US10606797B2 (en) * | 2018-07-05 | 2020-03-31 | Mythic, Inc. | Systems and methods for implementing an intelligence processing computing architecture |
US11238102B1 (en) | 2018-12-10 | 2022-02-01 | Palantir Technologies, Inc. | Providing an object-based response to a natural language query |
TWI837000B (zh) * | 2022-05-26 | 2024-03-21 | 國立清華大學 | 一種浮點數壓縮方法、運算裝置及電腦可讀取儲存媒介 |
CN115793989B (zh) * | 2023-02-06 | 2023-06-20 | 江苏华存电子科技有限公司 | 一种基于NAND的NVMe KV SSD数据管理方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7233265B2 (en) * | 2002-05-09 | 2007-06-19 | International Business Machines Corporation | Method and arrangement for data compression according to the LZ77 algorithm |
US7436330B2 (en) * | 2006-03-24 | 2008-10-14 | The University Of Mississippi | High-speed data compression based on set associative cache mapping techniques |
US8013762B2 (en) * | 2009-11-03 | 2011-09-06 | Seagate Technology Llc | Evaluating alternative encoding solutions during data compression |
US8085171B2 (en) * | 2006-03-24 | 2011-12-27 | University Of Mississippi | High-speed data compression based on set associative cache mapping techniques |
US8248279B2 (en) * | 2010-10-26 | 2012-08-21 | Hewlett-Packard Development Company, L.P. | History buffer apparatus and method for adaptive lossless data compression |
US8933824B1 (en) * | 2013-08-28 | 2015-01-13 | International Business Machines Corporation | Hardware decompression of deflate encoded data with multiple blocks |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5353024A (en) * | 1992-05-01 | 1994-10-04 | Intersecting Concepts, Inc. | Method for data compression having an improved encoding algorithm which utilizes a token stacking technique |
US5572206A (en) * | 1994-07-06 | 1996-11-05 | Microsoft Corporation | Data compression method and system |
US5627534A (en) * | 1995-03-23 | 1997-05-06 | International Business Machines Corporation | Dual stage compression of bit mapped image data using refined run length and LZ compression |
US5659737A (en) * | 1995-08-01 | 1997-08-19 | Oracle Corporation | Methods and apparatus for data compression that preserves order by using failure greater than and failure less than tokens |
US6741368B1 (en) * | 1999-05-25 | 2004-05-25 | Adobe Systems, Incorporated | Method and apparatus for reducing storage requirements for display data |
JP3889762B2 (ja) * | 2002-12-26 | 2007-03-07 | 富士通株式会社 | データ圧縮方法、プログラム及び装置 |
TWI428850B (zh) * | 2006-06-08 | 2014-03-01 | Via Tech Inc | 解碼方法 |
US8463759B2 (en) * | 2007-09-24 | 2013-06-11 | Ca, Inc. | Method and system for compressing data |
US7605721B2 (en) * | 2007-11-30 | 2009-10-20 | Red Hat, Inc. | Adaptive entropy coding compression output formats |
JP5520391B2 (ja) * | 2010-12-28 | 2014-06-11 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 検索開始点を決定する装置及び方法 |
US8824569B2 (en) * | 2011-12-07 | 2014-09-02 | International Business Machines Corporation | High bandwidth decompression of variable length encoded data streams |
WO2013095615A1 (en) * | 2011-12-23 | 2013-06-27 | Intel Corporation | Bitstream processing using coalesced buffers and delayed matching and enhanced memory writes |
US8766827B1 (en) * | 2013-03-15 | 2014-07-01 | Intel Corporation | Parallel apparatus for high-speed, highly compressed LZ77 tokenization and Huffman encoding for deflate compression |
US9628111B2 (en) * | 2015-05-11 | 2017-04-18 | Via Alliance Semiconductor Co., Ltd. | Hardware data compressor with multiple string match search hash tables each based on different hash size |
US9537504B1 (en) * | 2015-09-25 | 2017-01-03 | Intel Corporation | Heterogeneous compression architecture for optimized compression ratio |
-
2015
- 2015-09-25 US US14/866,115 patent/US9537504B1/en not_active Expired - Fee Related
-
2016
- 2016-07-27 CN CN201680049229.1A patent/CN107925420B/zh active Active
- 2016-07-27 DE DE112016004324.4T patent/DE112016004324T5/de not_active Ceased
- 2016-07-27 WO PCT/US2016/044303 patent/WO2017052758A1/en active Application Filing
- 2016-08-11 TW TW105125634A patent/TWI692213B/zh not_active IP Right Cessation
- 2016-12-29 US US15/393,599 patent/US9871535B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7233265B2 (en) * | 2002-05-09 | 2007-06-19 | International Business Machines Corporation | Method and arrangement for data compression according to the LZ77 algorithm |
US7436330B2 (en) * | 2006-03-24 | 2008-10-14 | The University Of Mississippi | High-speed data compression based on set associative cache mapping techniques |
US8085171B2 (en) * | 2006-03-24 | 2011-12-27 | University Of Mississippi | High-speed data compression based on set associative cache mapping techniques |
US8013762B2 (en) * | 2009-11-03 | 2011-09-06 | Seagate Technology Llc | Evaluating alternative encoding solutions during data compression |
US8248279B2 (en) * | 2010-10-26 | 2012-08-21 | Hewlett-Packard Development Company, L.P. | History buffer apparatus and method for adaptive lossless data compression |
US8933824B1 (en) * | 2013-08-28 | 2015-01-13 | International Business Machines Corporation | Hardware decompression of deflate encoded data with multiple blocks |
Also Published As
Publication number | Publication date |
---|---|
TW201720063A (zh) | 2017-06-01 |
US9871535B2 (en) | 2018-01-16 |
CN107925420B (zh) | 2022-01-04 |
WO2017052758A1 (en) | 2017-03-30 |
US20170111059A1 (en) | 2017-04-20 |
DE112016004324T5 (de) | 2018-06-28 |
US9537504B1 (en) | 2017-01-03 |
CN107925420A (zh) | 2018-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10635448B2 (en) | Byte and nibble sort instructions that produce sorted destination register and destination index mapping | |
TWI692213B (zh) | 用以執行資料壓縮的處理裝置和方法以及系統單晶片(SoC) | |
US10140046B2 (en) | Supporting data compression using match scoring | |
US9244827B2 (en) | Store address prediction for memory disambiguation in a processing device | |
US10901899B2 (en) | Reducing conflicts in direct mapped caches | |
US10216516B2 (en) | Fused adjacent memory stores | |
US10635447B2 (en) | Scatter reduction instruction | |
US20190179766A1 (en) | Translation table entry prefetching in dynamic binary translation based processor | |
US10019262B2 (en) | Vector store/load instructions for array of structures | |
US10691454B2 (en) | Conflict mask generation | |
US10719355B2 (en) | Criticality based port scheduling | |
WO2017119973A1 (en) | Binary translation support using processor instruction prefixes | |
US11372775B2 (en) | Management of the untranslated to translated code steering logic in a dynamic binary translation based processor | |
US20190171461A1 (en) | Skip ahead allocation and retirement in dynamic binary translation based out-of-order processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |