TW201921844A - 基於字典的資料壓縮 - Google Patents

基於字典的資料壓縮

Info

Publication number
TW201921844A
TW201921844A TW107131828A TW107131828A TW201921844A TW 201921844 A TW201921844 A TW 201921844A TW 107131828 A TW107131828 A TW 107131828A TW 107131828 A TW107131828 A TW 107131828A TW 201921844 A TW201921844 A TW 201921844A
Authority
TW
Taiwan
Prior art keywords
phrase
buffer
dictionary
data
phrases
Prior art date
Application number
TW107131828A
Other languages
English (en)
Inventor
亞歷山卓金斯里 聖約翰
Original Assignee
紐西蘭商奈瑞爾德有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 紐西蘭商奈瑞爾德有限公司 filed Critical 紐西蘭商奈瑞爾德有限公司
Publication of TW201921844A publication Critical patent/TW201921844A/zh

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6017Methods or arrangements to increase the throughput
    • H03M7/6023Parallelization
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)

Abstract

揭示了基於字典的資料壓縮的方式,包括其中Z緩衝被使用以識別代表未壓縮資料的短語和/或透過組合一組重疊的被遮擋的短語來產生解壓縮資料的方式。

Description

基於字典的資料壓縮
本發明涉及基於字典的資料壓縮,且特別涉及適用於平行計算環境的基於字典的資料壓縮方法。
在基於字典的資料壓縮和解壓縮中,主要任務是將輸入資料流拆解為模式(patterns)(也稱為短語(phrases)),其相對應的符號(也稱為碼字(codewords))具有最小的總位元長度,並從而壓縮資料流。
傳統上,基於字典的壓縮系統接收輸入資料流,將其分割為有順序的非重疊短語,並使用來自字典的唯一的碼字對短語進行編碼。包含有順序的碼字的壓縮資料流可以透過某種形式的熵編碼(例如算術編碼)進一步壓縮,並被儲存或發送,並且可以稍後解壓縮。基於字典的解壓縮系統獲取經壓縮的資料流,並且在熵解碼之後,透過查找字典或字典的副本中的碼字來解碼每個碼字,以找到匹配的短語。將每個匹配短語依序添加到輸出流中以產生解壓縮的結果。輸出資料流是有順序的非重疊的經解碼短語,其在沒有錯誤的無損系統中對應於輸入資料流。
然而,由於所涉及的計算複雜性和這些技術的序列特性,傳統的基於字典的壓縮技術受到限制。
一個目的是要提供一種資料壓縮的替代方法,其克服或至少改善了現有資料壓縮技術的一些或所有缺點,或者至少為大眾或工業提供有用的選擇。
在第一範例實施例中,提供有一種用於壓縮資料的設備,該設備包括: 處理器; 與處理器相關聯的記憶體;和 Z緩衝; 其中該Z緩衝用以識別表示未壓縮資料的短語(phrases)。
較佳地,一或多個短語是重疊的被遮擋(occluded)的短語。
較佳地,預先分配最低排序的重疊的被遮擋的短語。
較佳地,預先分配複數個最低排序的重疊的被遮擋的短語,Z緩衝被用以識別表示未壓縮資料的短語,且所得到的短語被存取以識別最佳壓縮資料的短語。
較佳地,該設備進一步包括模板緩衝,其中模板緩衝與Z緩衝結合使用以將萬用字元(wildcard)短語儲存在遮擋的短語內。
較佳地,在處理期間,Z緩衝和模板緩衝互動,使得在短語中存在萬用字元的情況下,來自Z緩衝的較低深度的短語的資料通過。
較佳地,短語是從字典獲得的。
較佳地,短語是由設備從資料所產生。
較佳地,短語是用於插入至壓縮字典中。
較佳地,若經識別的短語不在壓縮字典中,則將該短語增加到壓縮字典中。
較佳地,短語被表示為函式。
較佳地,函式由標籤參照,且該函式採用參數,且其中短語由該標籤和該等參數表示。
較佳地,短語由一雜湊碼(hash code)表示,雜湊碼對應於複數個函式。
較佳地,Z緩衝被用以基於一或多個經識別的短語來編碼未壓縮的資料。
在第二範例實施例中,提供有一種壓縮資料的方法設備,該方法包括以下步驟: 使用Z緩衝識別表示未壓縮資料的短語。
較佳地,一或多個短語是重疊的被遮擋(occluded)的短語。
較佳地,預先分配最低排序的重疊的被遮擋的短語。
較佳地,預先分配複數個最低排序的重疊的被遮擋的短語,該方法進一步包括以下步驟: 使用Z緩衝識別表示未壓縮的該資料的短語;及 存取所得到的短語以識別最佳壓縮該資料的短語。
較佳地,該方法進一步包括以下步驟:使用模板緩衝結合Z緩衝來將萬用字元短語儲存在遮擋的短語內。
較佳地,在處理期間,Z緩衝和模板緩衝互動,使得在短語中存在萬用字元的情況下,來自Z緩衝的較低深度的短語的資料通過。
較佳地,該方法進一步包括以下步驟:從字典獲得短語。
較佳地,該方法進一步包括以下步驟:從資料產生短語。
較佳地,短語是用於插入至壓縮字典中。
較佳地,該方法進一步包括以下步驟: 判定經識別的短語不在壓縮字典中;及 將短語增加到壓縮字典中。
較佳地,短語被表示為函式。
較佳地,函式由標籤參照,且該函式採用參數,且其中短語由該標籤和該等參數表示。
較佳地,短語由一雜湊碼(hash code)表示,雜湊碼對應於複數個函式。
較佳地,該方法進一步包括以下步驟:使用Z緩衝來基於所識別的短語中的一或多個短語來編碼未壓縮的資料。
在第三範例實施例中,提供有一種用於解壓縮經壓縮的資料的設備,該設備包括: 處理器; 與處理器相關聯的記憶體;和 Z緩衝; 其中該Z緩衝被用以透過組合一組重疊的被遮擋的短語來產生解壓縮的資料。
較佳地,短語是重疊的被遮擋(occluded)的短語。
較佳地,該設備進一步包括模板緩衝,其中模板緩衝與Z緩衝結合使用以將萬用字元(wildcard)短語儲存在遮擋的短語內。
較佳地,在解壓縮期間,Z緩衝和模板緩衝互動,使得在短語中存在萬用字元短語的情況下,來自Z緩衝的較低深度的短語的資料通過。
較佳地,經壓縮的資料包含碼字(codewords),且短語是透過查詢在字典中的碼字來獲得的。
較佳地,字典中的碼字包含多個短語,且其中經壓縮的資料包含一或多個校驗和(checksum)。
較佳地,處理器經配置以使用每個短語平行地解壓縮經壓縮的資料、計算與解壓縮相關聯的校驗和、將所計算的校驗和與經壓縮的資料中所包含的校驗和進行比較、並基於該比較來判定要使用哪個階段。
較佳地,處理器經程式化以透過執行一或多個函式來解壓縮經壓縮的資料。
較佳地,函式由標籤參照,且該函式採用參數,且其中經壓縮的資料包含該標籤和該等參數表示。
在第四範例實施例中,提供有一種用於解壓縮經壓縮的資料的方法,該方法包括以下步驟: 使用Z緩衝透過組合一組重疊的被遮擋的短語來產生解壓縮的資料。
較佳地,短語是重疊的被遮擋(occluded)的短語。
較佳地,該方法進一步包括以下步驟:使用模板緩衝結合Z緩衝來將萬用字元短語儲存在遮擋的短語內。
較佳地,在解壓縮期間,深度和模板緩衝互動,使得在短語中存在萬用字元短語的情況下,來自Z緩衝的較低深度的短語的資料通過。
較佳地,經壓縮的資料包含碼字,該方法進一步包括以下步驟: 透過在字典中查詢碼字來獲得短語。
較佳地,字典中的碼字包含多個短語,且其中經壓縮的資料包含一或多個校驗和(checksum)。
較佳地,該方法進一步包括以下步驟: 使用每個短語平行解壓縮經壓縮的資料; 計算與該解壓縮相關的校驗和; 將計算的校驗和與在經壓縮的資料中所包含的校驗和相比較;和 根據該比較判定使用哪個階段。
較佳地,該方法進一步包括以下步驟:透過執行一或多個函式來解壓縮經壓縮的資料。
較佳地,函式由標籤參照,且該函式採用參數,且其中經壓縮的資料包含該標籤和該等參數表示。
在第五範例實施例中,提供有一種電腦程式產品,其包括指令,當該等指令由電腦執行時,使得處理器實行另一實施例之方法。
在第六範例實施例中,提供有一種非暫態電腦可讀取媒體,其包括指令,當該等指令由電腦執行時,使得處理器實行另一實施例之方法。
第1圖示出了用於使用基於字典的資料壓縮來編碼原始輸入資料的範例方法。原始輸入資料包括字符(characters)流(例如二進位數)。
在步驟101,獲得編碼字典。這可以預先產生,或者可以在原始輸入資料準備被編碼時即時(on-the-fly)產生。編碼字典可包括多個條目,每個條目是一或多個模式與符號之間的映射。條目可以包括以下的一或多個:固定模式與符號之間的映射、函式和符號之間的映射、萬用字元(wildcard)模式和符號之間的映射、多個模式或函式與符號之間的映射、或模式與模式的雜湊之間的映射。另外,編碼字典可以包含規則,例如重疊規則,以提供兩個或更多個模式在使用中可以如何彼此重疊。用於產生編碼字典的方式的範例在第3圖至第9圖中示出。
在步驟102,基於原始輸入資料調整編碼字典。這可以是為了提供改進的壓縮。在編碼字典是在當原始輸入資料準備要被編碼時而即時產生的情況下,步驟100和步驟200可以同時實行。在其他情況下,可以省略步驟200。用於調整編碼字典的方式的範例在第10圖中示出。
在步驟103,使用編碼字典對原始輸入資料進行編碼。這可能涉及識別編碼字典的模式是否出現在原始輸入資料中,且如果是,則用該模式的符號取代該模式。字典可以提供更複雜的編碼規則。這個結果是符號編碼的資料。在一些情況中,可產生許多可能的可逆編碼排列,並且選擇最緊密(compact)的一個。
在步驟104,對經符號編碼的資料進行熵編碼。這可以使用算術編碼或位元縮緊(bit packing)編碼。這可以用以進一步壓縮經符號編碼的資料或者編碼與編碼字典中的條目不匹配的資料流的區域。這個結果是經壓縮的熵編碼的資料。在某些情況下可以省略步驟400。用於使用編碼字典對原始輸入資料進行編碼的方式的範例在第11圖至第14圖中示出。
獲取編碼字典
在一些實施例中,產生編碼字典是透過首先實行搜尋來識別一組模式,該組模式編碼樣本資料。
搜尋可以涉及產生直到資料長度的每個可能的字符的模式。然而,一旦資料超過一定的大小,由於產生了大量的模式,使這變得不切實際。在這樣的情況下,每個產生的模式中的位元數可能受到限制(例如在二進位資料的情況下僅為1位元、2位元、和3位元模式)。
接著分析資料以判定資料中每個產生的模式的出現次數。在判定期間,兩種模式可能重疊。例如,2位元模式「10」和「01」在二進位資料「101」中出現一次。
表1至表3示出了對範例二進位資料實行的判定:001101110001。表1顯示了資料001101110001中的1位元模式,表2顯示了資料001101110001中的2位元模式,及表3顯示了資料001101110001中的3位元模式。 表1 表2 表3
平行排列搜尋
模式接著基於判定而被合併到代碼短語中。合併的目的是找到作為字典和編碼的資料的組合大小的函式的最適合的模式的一或多個子集。這樣的目的可以是最佳化該組模式的多樣性。也就是說,該組模式應該為訓練資料和非訓練資料提供有用的編碼。
在一種方式中,實行平行排列搜尋以找到完美地編碼樣本資料的最佳的模式的子集。這涉及平行地檢查模式的每個排列以判定該排列是否是最佳的。
並非所有完美地編碼資料的子集在壓縮方面都必定是最佳的。舉例來說,使用資料01101110001,表4中所示的字典將滿足完美編碼的要求。然而,因為每個符號都被其自身替換,所以這不會達到資料壓縮。 表4
表5中所示的單一條目字典將達到最大可能的資料壓縮,但是當字典的大小包括在所得到的壓縮計算中時,沒有全部壓縮。 表5
傳統的壓縮字典可以利用例如霍夫曼編碼的前綴碼來標記字典條目以進行壓縮。這些前綴碼對序列壓縮很有用,但阻礙了有效的平行壓縮。
為了允許平行壓縮,字典條目單純地編號從0 - N,其中N是所選擇的最後一個字典索引條目。如果N需要17位元來對其編碼,則所有字典條目初始都是17位元。固定位元寬度字典碼字的壓縮低效率,可以在單獨的熵編碼處理期間被處理。
對於少量的資料樣本,可以實行對所有可能的模式組合的完整搜尋,來找到最佳字典,以最大化對樣本資料的壓縮,作為字典和編碼資料的組合大小的函式。給定小資料樣本001101110001,如果模式搜尋被限制為1-3位元模式,則可能發現存在一些等效的最佳編碼字典。
然而,對於非常大的資料樣本,即使對於最快速的平行電腦而言,完整排列搜尋最佳字典在計算上也是不可行的。因此,對最佳模式組合的搜尋可以使用許多技術來減少所考慮的組合的數量。
使用 Z 緩衝判定一組模式
在一些實施例中,統計啟發法(statistical heuristics)用於加權某些模式的可能壓縮值。這可以用於減少需要搜尋有效的編解碼字典方案的可能的模式組合的集合。
統計啟發法的一個範例是香農指數(Shannon index)。這反映了給定的模式是否比其他模式更頻繁地出現。具有較高香農指數的模式可被假設為具有提供有用壓縮的較高可能性。
加權模式被排序為模式的優先的排序列表用以搜尋,其中最高優先的模式是最有可能導致有用壓縮的模式。對於可能的最佳字典,按照排序的順序對這些模式的組合測試模式。
這種測試的一種方式是使用Z緩衝(Zbuffer)。
Z緩衝是圖形系統的一個元件,其可透過儲存一組描繪的(rendered)像素自查看器的距離來處理對象的遮擋。Z緩衝包括形成二維陣列的多個單元(cells)。Z緩衝中的每個單元中的值是與該單元重疊(全部,或者例如,至少一半)的最淺的對象。Z緩衝可以用硬體或軟體實施。
第2圖描繪在3D圖形描繪中使用Z緩衝的範例。
三個對象211、212、和213位於三個個別的深度。分別在201、202、和203處示出獨立描繪每個對象的Z緩衝的視圖。
對象211位於深度15處。對應於深度15的視圖201示出與對象211重疊的單元具有值3,而其他單元具有值0。對象212位於深度8處。對應於深度8的視圖211示出與對象212重疊的單元具有值8,而其他單元具有值0。對象213位於深度15處。對應於深度15的視圖203示出了與對象213重疊的單元具有值15。
視圖204示出三個對象201、202、和203是如何被描繪。組合的描繪的幀在較高編號(且因此較深)的緩衝區(buffer)上呈現較低編號(且因此較淺)的緩衝區。因為對象213處於較低的深度,所以它被描繪在其他對象的上方,這些其他對象位於更大的深度。
視圖205示出對應於所有三個對象的單元中的值。在視圖203中顯示15的任何單元在視圖205中也顯示15。這反映出對象213是最淺的對象,因此被描繪在其他對象的前面。
Z緩衝的這種使用允許適當且有效地描繪不同深度的多個對象。
Z緩衝可用於識別適當的模式的子集,以用作為基於字典的壓縮中的碼字。這參考第3圖和第4圖中的範例來解釋。模式以它們對壓縮的可能的貢獻的順序來排序,如透過啟發式加權函式計算的。例如,可以應用例如卡方分析(chi-squared analysis)的統計方法,以基於各種參與模式它們可能的資訊內容和未來相關資料中的可能的重現來正確地加權各種參與模式的值。
緩衝300示出了要編碼的範例64位元的資料片段。統計啟發法已表明,有三種模式是對資料的壓縮最有可能的貢獻者。按照從最高-到-最低的貢獻,這些是模式303、302、和301。
在第3圖中,模式從最淺到最深排序為模式303(具有索引0)、模式302(具有索引1)、和模式301(具有索引2)。這些是按索引的順序所考量的。
因此,首先應用模式303。這涉及建構與資料相同大小的幀313,在該幀中模式303的任何實例保持他們的值,且所有其他單元被給予值0。該幀成為Z緩衝的內容(因為否則Z緩衝為空)。幀323示出了幀313中的模式303的位置。接著,在其他排名最高的模式上實行排列搜尋,以判定哪個其他的模式對資料的編碼貢獻最大(假定模式303已被選擇)。因此,第二應用模式302,因為它導致比模式301更高對壓縮的貢獻。幀312以與幀313相同的方式建構。幀312具有比幀313更大的深度。幀322示出了幀312中的模式302的位置。因此,當幀313和幀312在Z緩衝中組合時,給定單元的值將顯示來自幀313的對應值。如果未指定,則使用來自幀312的值。
此處理透過應用模式301而重複,以產生更深的幀311。幀321示出了幀311中的模式301的位置。幀311與幀313和幀312結合於Z緩衝中。可以應用進一步的模式,直到資料被充分編碼(例如,根據所選擇的碼字的數量或壓縮的等級)、直到不再有可用的模式、直到下一個碼字的壓縮貢獻低於閾值、或者滿足另一個條件。
這樣的結果,獲得了資料的有順序的編碼{0, 1, 1, 0, 2, 1, 2, 0}。這反映了所使用的模式的索引。緩衝314示出了編碼的結果,並且幀324示出了每個模式對此的貢獻。
在代碼字之間存在一些重疊,如它們在資料中出現。下面說明了解碼期間模式如何重疊的規則。此外,還有一些未編碼的資料。允許這個的情況如下所述。
第4圖示出了相同資料的替代編碼。在此情況下,統計啟發法表明應該從最多到最小貢獻排序的模式是模式402、403、和401。這些分別對應於模式302、303、和301。
模式402、403、和401中的每一個的貢獻分別在幀412、413、和411中示出。另外,模式402、403、和401的位置在對應的幀422、423、和421中示出。緩衝414示出了編碼的結果,並且幀424示出了每個模式對此的貢獻。值得注意的是,緩衝414的值與緩衝314的值相同。然而,如幀324和424所示,關於最候結果的模式的位置由於模式的不同排序而不同。
透過應用類似的方式,這導致了不同的編碼:{1, 0, 0, 1, 2, 0, 2, 1}。兩種編碼都具有相同等級的壓縮。以這種方式,可能存在針對相同資料的多個等效編碼。
在一些實施例中,可能不能期望與字典組合的樣本資料的最佳整體壓縮。對於大規模儲存處理,字典的大小可能是無關緊要的,在這種情況下,可以選擇統計權重以有利於最大化整體資料壓縮或是平衡整個壓縮與在廣泛的資料樣本類型的編解碼器通用性,而不考慮字典快取的整體大小。
重疊模式
在一些實施例中,不假設模式是按順序編碼和解碼,其中模式中的最後一位元直接鄰接下一編碼模式中的第一位元。也就是說,可以基於資料的模式可以以位元粒度(bit granularity)重疊且彼此遮擋而來產生編碼字典。在搜尋最佳編碼的過程中可以判定重疊模式。因為允許模式彼此重疊,所以需要有效的方法來快速測試模式的組合並考慮可能由於選擇可能彼此重疊的字典條目而發生的任何編碼冗餘。在一個實施例中,平行的Z緩衝,例如由GPU用於3D圖形的那些,被用以快速計算任何兩個或更多個字典條目的重疊或可能的編碼冗餘。
在一些實施例中,最低值的字典索引是被假設要編碼Z緩衝中的最淺位置,接著較高索引值模式編碼在Z緩衝中的較高層中。這意味著在兩個模式可能重疊處,較低索引的模式遮擋了高索引的模式。
Z緩衝還可以用於資料編碼,使得所有模式可以平行編碼至Z緩衝中而不會出現阻擋或記憶體衝突問題。只要所有模式都在與其字典索引相對應的Z緩衝深度處編碼,當呈現Z緩衝時,最終的解碼資料將正確地產出。深度0是Z緩衝中的最高深度而深度1到n具有更大的深度。
字典可以包括描述允許模式被編碼為彼此重疊的條件的規則。這允許即時(on-the-fly)計算兩個或更多個模式之間的重疊,並且可以避免在字典或資料流中需要儲存額外的重疊偏移資訊。這些規則可以在字典的創建期間被預先確定,或者可以以程式方式或啟發式方式判定,以為了最大化字典的壓縮。在一些情況下,可以在編解碼器字典中適應性地改變特定編碼模式的深度,以改變允許圖案重疊的順序來達到更好的壓縮。
在某些情況中,字典中可能存在的重疊編碼條件包括: l 限制重疊至位元組(byte)、字(word)、雙字(dword)或其他任意位元寬度之邊界內。 l 重疊的位元完全匹配的重疊。 l 模式中的位元與包含的萬用字元(wildcard)模式完全匹配的重疊。 l 根據任何程式定義的規則。
這種重疊規則的使用可能具有特定的應用。例如,在某些情況中,重疊規則可以被配置為: l 尋找和編碼資料中的維度,例如2D圖像、或結構化資料記錄,例如TCP/IP封包標頭100。 l 編碼檔案標頭,其中標頭的大部分包含給定資料的冗餘資訊或是具有資料的幾個可變區域的對像類型。 l 編碼大模式走向(large pattern runs)可能會被小的週期性可變資料區域中斷。
作為編碼字典中的條目的函式
對於字典中的任何模式,可以將其視為函式和給定的輸入參數的輸出結果。例如,一些值的所有資料走向(data runs)可以透過使用基本模式和走向次數作為參數的函式來描述,並輸出該模式計數的二進位模式。
因此,在一些實施例中,一或多個字典條目包括產生二進位模式的函式(具有或不具有參數),而不是直接在字典中記錄二進位模式。
為了效能的目的,可以在運行時預先運算和快取這些函式生成的模式。
在判定是否應使用函式來儲存模式時,可以依序考量預先運算的函式池(pool)來判定函式是否提供更好的解。在這種情況中,更好可能意味著編碼字典中在尺寸上更小。一個這樣的函式可能是簡單的「重複」函式。也就是說,給定輸入模式和重複次數,輸出的模式是重複該次數的該模式。如果可能以比儲存模式其本身還小的方式使用這樣的函式來描述模式,則可以在字典中使用該函式(具有任何必要的參數)。
在一些情況中,函式通常可以匹配資料,但並不完美。在這樣的情況中,可以儲存具有校正的函式,如果這導致比完全不使用函式來得更好的方案。
對模式使用雜湊碼( hash codes
在一些實施例中,雜湊碼可用以表示複合模式。這些複合模式可以透過採用多個相關模式,例如基本模式的重複、移位(shifted)、縮放(scaled)和子集(subset)/超集(superset)版本,雜湊(hashing)每個變體並將所有雜湊碼組合在一起形成單個雜湊值和基本模式,來產生。此複合雜湊碼可被用以判定給定模式是否是已在編碼字典中表示的模式的變換集的成員。
在一些實施例中,編碼字典可以被結構化為雜湊表或其他稀疏資料結構,而不是整數可索引陣列。這使得多個模式能夠對應於相同的字典條目。為了編碼的目的,對應於匹配字典條目的雜湊值將代替按順序分配給雜湊表條目的順序索引值。在編碼字典包含大量稀疏出現的模式的情況下,使用雜湊值進行編碼可能是合適的。
在使用中,編碼字典掃描訓練集中的原始輸入資料的序列,以找出模式的出現。它需要判定此模式是否是字典中現有模式的經轉換(例如移位(shifted)或截斷(truncated))的變體。因此,它計算模式的所有移位變體的雜湊碼,並將它們全部互斥或運算(XORs)。這被與現有模式上的同一組移位變換的相同雜湊碼進行比較。如果結果的雜湊碼匹配,則新模式可以被儲存為現有模式的變換變體。例如,新模式可以是1001011。發現這個雜湊碼與已在字典中的模式17匹配。這是因為字典中的模式17(0111001),是相同模式的移位版本。以這種方式,新模式1001011可被儲存為模式17的移位變體。這可以減小編碼字典的大小,因為儘管模式17存在六種可能的移位變體,但是只有其中的兩種實際出現在訓練資料中。
在另一範例中,給定輸入模式1001,判定此模式是否是字典中的任何模式的子集可能是有用的。儘管對在字典中的每個模式及所有他們的移位變體實行按位元掩碼(bitwise mask)是可能的,但這樣的方法可能不適合高度平行運算。相反的,值1001可以填充所有可能組合的3位元模式,其可匹配任何7位元模式,如表6所示。 表6
這些值以可複製的順序(例如從最低到最高)排序並連接。接著從連接的值計算雜湊。接著可判定其中一個模式是否與編解碼器字典中的另一個模式匹配。在此範例中,1011101匹配模式17(0111001),因為1011101是模式17的移位變體。因此,兩種模式的有順序的連接移位變體的雜湊將是相同的。因此,原始模式1001是現有模式的子集,並且因此可以儲存在模式17的變體中。
這些類型的複合排列雜湊碼對於平行壓縮可以是有用的,因為它們可被用以對於更大的計算需求換來更好的壓縮。
在另一範例中,在代碼的期間,發現表7中示出的模式發生於訓練資料中。 表7
所有三種模式都可以作為單一複合雜湊碼儲存在壓縮字典中。由於字典知道101是在壓縮期間此模式最可能發生的3位元版本,所以它可以首先嘗試使用該模式的最可能的版本對資料解碼,然後對該資料範例,根據雜湊碼校驗和(checksum)檢查經解碼的資料來確認是否匹配。如果它不匹配,它可以使用下一個最常見的模式變化來解碼資料,直到它最終找到與經編碼的資料校驗和雜湊匹配的排列。透過將相關模式儲存為複合雜湊函式而不是原始資料,搜尋與雜湊碼匹配的模式的排列可以實現更高的壓縮效率。
雜湊碼加速的排列搜尋
通常,壓縮的實現是透過將計算能力轉換為儲存節約。代替儲存原始資料,程式運行以從壓縮的經編碼資料計算原本的原始資料。大多數已知的無損壓縮方案要求資料以完全可逆的格式編碼,以確保資料可以被可靠地解碼。
在一些實施例中,使用模糊編碼規則來編碼資料。也就是說,編碼可以使用符號和多個模式之間的一對多的對應關係,而不是符號和模式之間的一對一對應關係。
可以將雜湊碼校驗和與編碼資料一起儲存,以幫助解碼演算法選擇用於解碼經壓縮的流的模糊解碼規則集的解釋,該解碼再現正確的原始結果。
因此,當使用模糊編碼字典來編碼資料時,可以最初地計算雜湊碼校驗和。可以嘗試編碼的多個排列以判定提供最大壓縮的編碼。這使用了原始雜湊碼來驗證,以確保編碼是可解碼以獲得原始資料。
當使用模糊編碼字典解碼經編碼的資料時,可以實行一些排列以判定哪些匹配於經編碼的資料的校驗和。當獲得正確的校驗和時,這表示使用了模糊編碼字典的正確解釋。
在一些實施例中,中間雜湊碼校驗和可以與壓縮資料流一起儲存,以便縮小針對滿足模糊可逆性規則的壓縮或解壓縮方案的組合排列搜尋。這可以防止組合搜尋變得不切實際的大。
在一些實施中,不相關的資料模式儲存在公共條目當中。在此範例中,模式01110可具有95%的發生機率,然而模式10101010可具有在輸入資料流中發生的機率為0.0001%。字典中的兩個模式可由相同的函式表示。這將意味著在壓縮期間,模式01110和不相關的模式10101010兩者的出現將用相同的字典碼字來編碼。為了正確地解碼所得到的符號,解碼器將首先嘗試替換與該符號相關聯的最常出現的模式,並檢查對該經編碼的資料的樣本的雜湊碼驗證的正確性。如果雜湊測試失敗,則解碼器將替換較不常見的出現模式10101010並再次檢查資料的驗證雜湊,直到模糊符號的某些組合產生與原始輸入資料的驗證雜湊碼匹配的解碼。
在一些情況中,給定模式的機率在資料流的不同部分是不同的。這可以記錄為函式的一部分。因此,在兩個模式由相同函式表示的情況下,在解碼期間嘗試模式的順序可以根據模式發生的位置而變化。
萬用字元( wildcard )模式作為編碼字典中的條目
萬用字元模式是包括可以是0或1的位元的模式。例如,萬用字元模式011**11將匹配01111 11、01100 11、01110 11、和01101 11。萬用字元模式在各種壓縮目的上是有用的。例如,由32位元RGBA圖像資料組成的輸入資料樣本,每塊資料由1位元組紅色(R)、綠色(G)、藍色(B)、和alpha(A)通道組成。紅色、綠色、和藍色位元組的值可能彼此沒有緊密相關,但每個位元組可以與它們相同顏色通道的相鄰位元組緊密相關。用於圖像壓縮的傳統壓縮工具通常被設計為知道它們將總是被給予圖像資料以進行壓縮。然而,在一般資料中心儲存和計算環境中,可以儲存和處理任意資料塊而無需上下文來知道資料是圖像類型。在一些實施例中,在訓練期間識別資料樣本中的複雜資料結構。這允許自動產生利用此資訊來改進壓縮的編碼字典。因此,系統搜尋在資料中的結構或維度,並提供在編碼字典中表示它的通用方式。
萬用字元模式提供了一種自動搜尋任意資料中的維度關係並在壓縮字典中表示它們的方法。用以識別編碼樣本資料的一組模式的搜尋可以包括掃描萬用字元排列。例如,在RGBA資料的情況中,編解碼器訓練引擎可能發現32位元萬用字元模式******** ******** ******** 00000000有輸入資料的樣本的高命中相關性,因為它包含具有空的alpha通道位元組的32位元RGB資料。
此範例在第5、6、7圖中示出。
第5圖示出了樣本輸入資料501、502、503、504、和505,每個資料具有空的alpha通道位元組。這由在每塊資料中的alpha通道位元組具有全零來表示。區域511、512、和513中的位元被識別為對樣本中的所有資料是共同的。區域511、512、和513之外的資料可不同,或者可由另一個字典條目來編碼。基於區域511、512、和513,產生模式521。模式521包含用於區域511、512、和513之外的位元的萬用字元,且因此僅編碼與紅色和alpha通道有關的位元。
第6圖顯示了與第5圖相同的輸入資料。然而,區域611和612中的位元被識別為對於樣本中的所有資料是共同的。由於字典中的不同的現有條目,這可能與區域511、512、和513不同。基於區域611和612,產生模式621。模式621包含用於區域611和612之外的位元的萬用字元,且因此僅編碼與綠色和alpha通道有關的位元。
第7圖顯示了與第5圖相同的輸入資料。然而,區域711和712中的位元被識別為對於樣本中的所有資料是共同的。由於字典中的不同的現有條目,這可能與區域511、512、和513及區域611和612不同。基於區域711和712,產生模式721。模式721包含用於區域711和712之外的位元的萬用字元,且因此僅編碼與藍色和alpha通道有關的位元。
此外,萬用字元模式可用以捕捉落入特定範圍內的值。例如,樣本的紅色通道可以是通常在64和128之間。在這種情況下,萬用字元模式:0001**** ******** ******** 00000000將匹配圖像中的大多數紅色樣本。在允許重疊模式下,可計算用於每個通道的一組重疊模式,當在層中組合時,提供一般性的壓縮方案。萬用字元中的常量位元作為鍵(keys)其可引導編解碼器自動地檢測給定的資料樣本實際上是32位元對齊的圖像資料,因為用於最佳壓縮資料的排列搜尋將發現與此模式的高度相關性,及具有此結構的圖像資料的最佳壓縮結果。
在一些實施例中,Z緩衝可以與模板緩衝一起使用以識別、編碼、和解碼萬用字元模式。模板緩衝可用於確保模式的萬用字元區域被排除在呈現至Z緩衝之外,來防止萬用字元的位元在編碼、解碼、和模式搜尋期間遮擋了Z緩衝中其他級別發生的模式。
第8圖中顯示了這樣的範例。幀緩衝801具有被應用的模板緩衝802。這防止了萬用字元位元遮擋了在其他級別發生的模式,例如在幀緩衝803中。因此,使用模板緩衝來使得能用萬用字元模式的結果是解碼輸出804。
第9圖示出模板緩衝將如何可與Z緩衝組合使用來呈現萬用字元模式的另一範例。第9圖大致類似第3圖。模式901、902、和903已被判定為可能的貢獻者。模式901、902、和903與模式301、302、和303相同,除了模式903在其最後的位元中包含萬用字元。幀911、912、和913分別示出應用了模式901、902、和903的影響,且幀921、922、和923分別示出了模式901、902、和903的位置。
產生模板緩衝915,其具有對應於模式903中的萬用字元的任何位元中的1。幀925示出模板緩衝915的位元的影響的位置。當編碼時,應用模板緩衝915以確保模式903中的萬用字元位元不會遮擋來自任何較低模式(即,模式901和902)的資料。這個結果是緩衝914。因此,緩衝914與緩衝314不同,因為使用模板緩衝904於模板緩衝904具有1的位置處。模板緩衝可以以硬體或軟體實施。
編碼無代表的模式
在一些實施例中,編碼字典可被提供有「失效(failure)」模式,來應用於資料模式,其不能有效地匹配字典條目或一組重疊模式。例如,給定表8中所示的字典,失效的模式可以在索引100(對應於十進位4)和101(對應於十進位5)處編碼,如表9中可見。 表8 表9
在此例中,增加失效模式增加了1位元於將每個索引編碼所需的位元數。可以首先實行使用基本2位元的字典的平行模式掃描和Z緩衝編碼,以檢測是否需要任何或所有的失效模式來完全編碼輸入資料。如果需要它們,則將失效模式添加到字典中,每個編碼的位元數增加到3,並且資料被重新編碼,該重新編碼包括失效模式來編碼任何在字典中找不到的模式。
儘管使用分配給3位元代碼字的單位元0和1將無效率地編碼失效的模式,但是透過將新的更高的字典條目分配給在Z緩衝掃描期間發現的更大的特定的不可編碼模式,可以改善這個結果。例如,如果模式10110110110101被發現是不能被字典編碼,則可以簡單地將其分配給字典中的高階索引,並使用該索引進行編碼。對於解碼資料所需的字典的適應性修改,包括對字典的排序順序和增加的模式的修改,是可以與壓縮資料一起儲存為對基本字典的適應性差異。這些差異可以在後續的解壓縮之前應用至基本字典。
測試編碼字典
一旦從一組樣本資料訓練壓縮字典,就可以針對一組類似資料測試壓縮字典,來測量其壓縮效率。因此,使用訓練的字典來編碼樣本資料集中的每一塊資料,並計算壓縮級別。
在測試過程中可以發現,在訓練樣本資料中未找到,或是找到但未針對壓縮字典而被選擇的某些壓縮模式表現出比字典中所選擇的壓縮模式更好的整體壓縮。在一個實施例中,最終的字典可以將這些模式中的一些保留在模式側板(sideboard)中,當使用壓縮字典時,模式側板可適應性地替換,以使編解碼器更多樣適用。模式側板是在先前訓練期間找到的編碼模式的列表,且其在編碼字典中未被分配索引的相關中間資料(metadata)。這些是在訓練期間發現的模式,這些模式是相關的但沒有發生在訓練資料集的最佳選擇上。
字典也可包含在訓練期間產生的一些統計啟發(statistical heuristics),其幫助經訓練的編解碼器識別編解碼器是壓縮的良好候選者的資料流,並且快速排除其不能良好壓縮的資料。
使用模式的雜湊
在一些實施例中,字典中的模式條目被模式的值的雜湊碼替換。可以使用這些雜湊碼,特別是對於大的模式,而不是使用實際資料模式,來減少記憶體消耗並加速資料處理。在解壓縮期間,可以透過使用在編碼資料流中的雜湊碼來還原原始大的資料模式,以從資料庫或對象儲存中還原大的原始模式。
適應性編碼
固定編碼字典可能無法達到輸入資料流的最佳的可能壓縮。因此,在一些實施例中,可以即時(on the fly)調整編碼字典以實現更好的壓縮結果。
第10圖示出用於調整編碼字典的範例方式。
在步驟1001,針對編碼字典中的模式掃描輸入資料流。
在步驟1002,產生關於輸入資料中的模式的分佈的統計資訊。這在某些情況中可以省略。
在步驟1003,判定是否滿足足夠的編碼條件。這可能關於輸入資料模式分佈是否落於目標壓縮值的範圍內,或者是否已達到某個壓縮級別。如果滿足足夠的編碼條件,則方法前進到步驟1006。如果不滿足足夠的編碼條件,則方法前進到步驟1004。
在步驟1004,當不滿足足夠的編碼條件時,編碼字典被調整以更好地滿足足夠的編碼條件。調整可能包括更改某些模式的順序、增加或刪除模式、向字典增加新的失效模式、或更改編碼規則(例如重疊規則)。
在步驟1005,這些改變被增加到壓縮資料流,作為對字典先前狀態的差異改變(delta changes),以便重現適應性的編碼字典。
可以使用各種常用的有效的差分編碼和/或壓縮方法來有效地表示將被增加到資料流中的字典的改變,以在解壓縮期間重建正確的字典。這方面的範例包括: l 可以將條目排序成新的更有效的順序,其新的位置記錄為他們先前索引位置的加或減的改變。 l 可以增加、刪除、或更改條目,這些更改表示為對預設的編解碼器字典的差異。增加或刪除的條目可以由插入或刪除的字典條目來指示,且新的條目可以被記錄為對現有條目的改變。 l 可以更新關於編解碼器的統計資訊,以包括新樣本資料的加權影響。
在步驟1005之後,基於調整的編碼字典來重新實行步驟1002。
在步驟1006,當滿足足夠的編碼條件時,該方法繼續,使用經調整的編碼字典對資料編碼。
編碼
一旦獲得了編碼字典,並且調整了編碼字典(或者省略了調整),則可以編碼原始輸入資料。
表10中示出了範例編碼字典。範例原始輸入資料如表11所示。 表10 表11
首先,識別在字典中的每個模式於原始輸入資料中的存在。表12示出了許多模式的存在。 表12
儘管整個原始輸入資料都被字典中的可用模式所覆蓋,但對字典模式仍必須允許模式重疊以完全表示資料。亦即,因為可能平行實行編碼,所以在處理期間每個平行編碼執行緒(thread)不能獲得關於模式如何彼此對齊的資訊。在一些實施例中,編碼可以以第一匹配模式首先編碼接著是後續匹配模式而序列地發生,如表13中可見。 表13
這產生編碼11010010101001。
重疊模式
為了避免包括關於重疊模式的模式偏移資訊,編碼字典可能涉及重疊規則。在上面的範例中,重疊規則將描述為:
假設所有模式在其最右邊的位元與後續模式的最左邊的位元匹配的位置重疊。如果後續模式被前面的模式完全遮擋,則不會對其編碼。如果先前模式的最右邊的位元與下一個模式的最左邊的位元不匹配,則假定它們完全對齊而沒有重疊。
在此範例中,不同的重疊編碼規則可能導致更好的壓縮,但降低了平行編碼效能。如果編碼規則只是禁止模式重疊並要求匹配的短語完全對齊,則編碼將如表14所示。 表14
這導致編碼11*10*10*01。特別是,原始輸入資料有三個部分無法編碼。產生的非重疊編碼將需要插入單獨的編碼符號以表示不對應於已知字典條目的資料。在此範例中,產生的編碼可能會大於允許重疊模式的編碼。
在一些實施例中,模糊的重疊模式規則是可能的。因此,經編碼的資料流與密碼品質雜湊碼(例如,SHA-2)校驗和一起儲存,該校驗和僅在當資料被正確解碼時可再現。編碼可接著涉及計算模糊重疊規則的所有可能解釋,並判定哪個提供最佳壓縮。
使用 Z 緩衝於編碼
Z緩衝可用於平行編碼。在前面的範例中,可使用Z緩衝,透過將匹配的模式資料呈現到對應於模式的編碼字典索引值的深度處的Z緩衝,來實行平行編碼。因此,字典(0)中的第一個條目將編碼於Z緩衝的前面(亦即,其值將永遠不會被其他更高的索引值模式遮擋),而字典中的最後一個條目將在Z緩衝的後面編碼。一旦資料流編碼於Z緩衝中,就可以針對顯示出的深度值掃描Z緩衝。Z緩衝中顯示出的模式的序列對應於經壓縮資料流的編碼。在Z緩衝呈現的期間完全重疊的任何冗餘模式都會被Z緩衝從編碼中消除。
表15中示出以這種方式使用Z緩衝的範例。Z緩衝前面的星號表示其值由較低字典索引的模式所提供。 表15
這結果是使用最少重疊位元編碼規則來編碼11、00、01、00、10、10、10、00、01。與表13中所示的序列編碼方法不同,表15中的Z緩衝編碼方法對來自相同字典的資料產生不同但同樣有效的編碼。表13中所示的序列編碼方式實現了比表15中所示的平行Z緩衝編碼方式更好的壓縮,然而,重新排序編碼字典提高了其壓縮效率。表16中示出了這樣的一個範例。 表16
這結果是編碼00、10、11、01、01、01、10。
因此,在一些實施例中,透過嘗試在Z緩衝中的模式順序的不同排列,並選擇導致最佳壓縮的順序,可以即時(on-the-fly)適應性地改善壓縮。可以接著包括在編碼字典編碼順序中的變化所需的差異與經壓縮資料流,以在編碼/解碼進行時適應性地修改字典為正確的狀態。
熵編碼
可以實行熵編碼作為壓縮的最後階段。可以將用於算術編碼的傳統方法應用於最終資料以最大化壓縮。然而,算術編碼通常是序列處理,這可能限制平行化編碼的能力。
在一些實施例中,可以使用位元縮緊(bit-packing)熵編碼。位元縮緊熵編碼可能導致改善的平行壓縮和解壓縮的可計算性。
位元縮緊( Bit-packing )熵編碼
位元縮緊熵編碼包括將經編碼的資料樣本組包裝成小的固定寬度的封包。例如,每個封包可以是32位元寬。儘管封包實際上可以是任意大的,但是將它們限制為與可以對它們進行編碼和解碼的平行處理器的暫存器或快取的寬度相匹配的位元寬會有一些好處。例如,可以將資料載入到平行處理器中、解壓縮、並計算,並且得到的輸出資料其本身可以被壓縮到相同執行緒(thread)內的封包中。因此,資料以其最佳壓縮形式通過電腦的I/O系統和記憶體移動,並且僅在處理所需要時解壓縮。
編碼字典索引中的所有位元可能是低效率的。可能已最佳化包含N個封包條目的字典,使得字典中最有價值的壓縮模式在字典中具有最低的編碼索引。如果N = 257(其二進位為100000001),則字典中的每個條目將以包括索引值0的9位元值來編碼。然而,字典中位置0的條目將通常是資料流中出現的最常見模式之一。流中的相關模式也可傾向於一起發生。
位元縮緊的方式如第11圖所示。
在步驟1101,接收編碼資料流。例如,編碼資料流是{47, 18, 27, 13, 7, 59, 1, 1, 3}。每個符號可以儲存為8位元,其中幾個符號用零在左邊填充以便佔到8位元。
在步驟1102,自經編碼的資料流選擇一組符號。例如,所選擇的符號為{27, 13, 7, 59}。此選擇可涉及對於符號序列的走向(runs)掃描經編碼的資料流,其中每個符號的順序和位元寬度被計數。
在步驟1103,將該組符號與模板字典中的現有模板進行比較,以選擇符號的最佳代表的模板。模板字典通常具有有限數量的模板。這些可能反映了可能發生的位元掩碼。模板字典中的一個模板是最壞情況的編碼模板,它沒有壓縮或者可能甚至稍微擴展資料。每個模板包括欄位列表,每個所選擇的符號必須符合欄位列表(如果省略了零填充)。模板的欄位中的總位元數等於封包大小減去封包標頭大小。封包標頭指示所使用的模板,因此封包標頭大小可以連接到可用的模板數量。
例如,如果有32個可用的模板,則需要5位元來提供32個值的範圍。因此,可以保留32位元封包的5位元來指示32個模板中的哪一個被使用,並且32位元封包的27位元可以用於資料。
因此,上面提到的符號集需要至少{5, 4, 2, 6}的模板。搜尋可能涉及將變換應用於模板(例如每個符號的掩蔽位元(masking bits),或旋轉模板)。
模板字典中可以有幾個匹配。例如,符號集可以匹配模板0:{7, 7, 7, 6}、模板1:{6, 6, 6, 6, 3};模板4:{4, 4, 3, 5, 4, 3, 4}(具有規則掩蓋每個條目的最後一個設置位元);模板19:{5, 5, 7, 5, 5};和最壞情況的模板31 {8, 8, 8 ,3}。模板0匹配是由於5、4、2、和6分別小於或等於7、7、7、和6。模板1是匹配的,因為5、4、2、和6各自小於或等於6、6、6、和6。但是,模板1包括最終的3位元欄位,該欄位將保持未使用。模板4是匹配的,因為5、4、2、和6(最後一位元被遮蔽)分別小於或等於4、4、3、和5。然而,模板4包括三個仍未使用的欄位。如果模板19向右旋轉以成為{5、5、5、7、5}模板,則模板19是匹配的。亦即,5、4、2、和6分別小於或等於5、5、5、和7。如果省略最後一個符號(以包括在另一個封包中),則模板31是匹配的,在5、4、和2是小於或等於8、8、和8。在某些情況中,只有最壞情況的模板才匹配。
然後選擇匹配的最緊湊的模板作為封包的模板。如果有多個一樣緊湊的匹配,則可以選擇任何一個。
在某些情況中,可以平行測試多個配置。例如,在步驟1102,可以選擇多組符號,而不是只選擇一組符號。可以選擇從所有平行測試中提供最緊湊結果的模板配置。
判定模板字典
在最佳模板模式和最小化模板符號計數之間有折衷。因此,在一些實施例中,可以在編解碼器訓練資料中做出出現有所有位元寬度序列,以及每個模板編碼的位元數。系統接著搜尋子集和對稱模板模式的所有組合,以找到最大化整體壓縮的模板掩模的最佳配置。
對於即時平行處理,可以將資料打包成固定(constant)位元寬度封包。這些封包可能需要一個小的固定寬度標頭來指示哪個模板適用於該封包。由於封包是固定寬度,所以如何選擇最佳模板還有一個固有的額外考量。更多的模板提供了更大的靈活性,但需要更大的標頭。如果標頭大於模板批准的數量,這會導致減少壓縮。
因此,在一些實施例中,會判定封包標頭大小以最大化壓縮。這是為了根據模板的數量和所需的封包標頭大小來最大化壓縮。
由於沒有理由浪費可能的編碼位元,如果標頭大小更寬而允許更大的模板選擇,則標頭大小可能更佳,或者所有選擇的模板模式可以被測試更寬的寬度,使得它們完全適合可用的資料封包,而沒有浪費編碼機會。例如,編碼封包可具有21個可用於包含符號的位元,但是最佳計算的模板可能僅需要20位元。在這種情況下,可以將最佳模板的各種排列計算為更寬的位元寬度,以找到從額外編碼位元中受益最多的那些。例如,在最佳模板為{5, 5, 5, 5}的情況下,{6, 5, 5, 5}、{5, 6, 5, 5}、{5, 5, 6, 5}、和{5, 5, 5, 6}的集合可被測試以找到具有最大額外編碼潛力的21位元模板。
模板對稱性
實際上許多模板模式可以是彼此的移位對稱(shifted symmetries),其在編碼期間單純地不對齊。例如,{5 5 6 5}模板是移位的{6 5 5 5}模板。模板也可以是彼此的重複對稱。例如,{6 5 6 5}是{6, 5}模板的超集,且是{5, 6, 5, 6}模板的移位對稱。{4, 4, 4, 4}模板是{6, 5, 6, 5}模板的子集。
在一些實施例中,針對這些對稱搜尋模板字典以判定是否透過識別它們並將對稱相關的模板分群在一起而可獲得編碼效率。可以透過將模板表示為單個模板函式的參數來進行此分群。這可能會減小整個模板列表的大小。
為了改善模板對稱性的檢測和匹配速度,可以對給定的模板模式分配雜湊碼,該雜湊碼是從其所有相關的對稱性計算的。因此,給定的模板模式的所有對稱性將散列(hash)到相同的值。分配至該雜湊碼的應用的模板可以對應於單個超集(superset)模板,其編碼在實際資料流中找到的所有可能的對稱性。
例如,{5, 5, 6, 6}、{5, 6, 5, 6}和{6, 5, 6, 5}模板將全部散列到相同的值並與{6, 6, 6, 6}模板匹配,{6, 6, 6, 6}模板是他們所有的超集。
第12圖是使用模板對稱的範例方式。
在步驟1201,產生給定模板的每個移位對稱。例如,對於模板{4, 5, 2, 2, 4, 4, 2},有6個移位對稱:{5, 2, 2, 4, 4, 2, 4}、{2, 2, 4, 4, 2, 4, 5}、{2, 4, 4, 2, 4, 5, 2}、{4, 4, 2, 4, 5, 2, 2}、{4, 2, 4, 5, 2, 2, 4}、和 {2, 4, 5, 2, 2, 4, 4}。
在步驟1202,將每個移位對稱的排列填充至資料的總可用位元數。例如,模板{4, 5, 2, 2, 4, 4, 2}需要23位元。如果封包大小允許27位元的資料,則可以以許多不同方式在模板上分配額外的4位元。例如,{8, 5, 2, 2, 4, 4, 2}或{5, 6, 3, 3, 4, 4, 2}。
在步驟1203,將雜湊函式應用至每個經填充的移位對稱。所有這些雜湊(hash)接著被散列(hashed)至單個值。
雜湊值可接著被用來快速判定模板序列是否是原始模板的對稱,因為它們將散列到相同的值。也就是說,{5 2, 3, 4, 4, 4, 4}的雜湊函式的結果將與{4, 5, 2, 2, 4, 4, 2}的雜湊函式的結果相同。
差分模板
可以透過減去常數值或一組值或資料序列來進一步減少其位元數來達到額外的壓縮。例如,序列{8, 17, 4, 19}可以從序列中的每個值中減去值4。這會將每個值減少至少1位元。減去後,該序列從需要17位元來編碼變成需要11位元來編碼。這節省了6位元的大小,然而減法模板需要一些額外的封包標頭資料來儲存。在另一範例中,{8, 8, 4, 8}差分模板可以達到更多的壓縮,其代價是在模板字典中需要額外的條目來儲存更專用的差分模板模式。
在一些實施例中,也可以將其他規則應用至模板以改善它們的壓縮,例如遮蔽每個欄位的第一個、最後一個、或中間n個設置位元。
第13圖顯示了判定差分模板的最佳組的範例方式。
在步驟1301,產生所有差分模板模式的出現的計數。
在步驟1302,計算每個差分模板對被壓縮的資料樣本的位元權重貢獻。
在步驟1303,差分模板基於最佳化資料大小的節省而被包括在模板字典中,作為模板列表的大小與達到的總位元節省的結合。
解碼
第14圖示出了解碼使用上述方法編碼的資料的範例。
在步驟1401,基於基本字典和與壓縮資料編碼的適應性差異來重建編碼字典。
在步驟1402,將經壓縮的資料中的每個符號與字典比較,以將模式解碼為Z緩衝。這使用了字典的解碼和重疊規則。
在步驟1403,如果解碼規則包括模糊性,則解碼可能的解釋的所有排列,並且選擇散列到與輸入資料相同的密碼雜湊的解碼輸出。
在一些實施例中,Z緩衝可用以透過將每個模式解碼至Z緩衝在其字典索引的深度處來實行經編碼的資料的解碼。如果不允許重疊模式,則每個模式在先前模式結束的位元位置處被編碼。如果允許重疊,則可以預先計算關於字典中的模式如何彼此重疊的額外資訊,以加速解壓縮並將其與編解碼器儲存為解碼規則。
一旦經編碼的資料流被解碼為Z緩衝,就可以根據其雜湊碼對其呈現(rendered)和測試,以確認它已被正確解壓縮。
系統
第15圖示出了範例壓縮系統1500的方塊圖。壓縮系統1500包括主記憶體1505、中央處理單元(CPU)1510、圖形處理單元(GPU)1520。系統1500可進一步包括複數個儲存裝置1565,其經由匯流排1575連接到I/O處理器1525。
CPU 1510、GPU 1520、和I/O處理器1525經由系統匯流排1585通訊。此外,CPU 1510經由專用匯流排1580與主記憶體1505通訊。
應理解,上述方式的實施例可以以多種方式實施,包括作為程序、設備、系統、裝置、方法、電腦可讀取媒體、計算算法、嵌入式或分散式軟體和/或其中之組合。
在一些實施例中,設備被實施為現場可程式邏輯閘陣列(FPGA)或特殊應用積體電路(ASIC)。
各種實施例可以在各樣的操作環境中實施,在一些情況下,這些操作環境可以包括一或多個使用者電腦、計算裝置、或可用以操作多個應用程式中的任何一個的處理裝置。使用者或客戶端裝置可以包括許多通用個人電腦中的任何一個,例如運行標準作業系統的桌上型或膝上型電腦、以及運行行動軟體並且能夠支援多個網路和訊息協定的蜂巢式、無線、和手持的裝置。這樣的系統亦可包括多個工作站,其運行各種商業上可用的作業系統,以及用於例如開發和資料庫管理之目的的其他已知的應用程式。這些設備亦可包括其他電子元件,例如虛擬終端、精簡型客戶端、視訊終端、和能夠經由網路通訊的其他裝置。
各種態樣也可實施為至少一個服務或Web服務的一部分,例如可以是服務導向的架構的一部分。例如Web服務之類的服務可以使用任何適當類型的訊息來通訊,例如透過使用可延伸性標示語言(XML)格式的訊息並使用諸如SOAP(「簡單物件存取協定」)之類的適當的協定來交換。由這些服務提供或執行的程序可以以任何合適的語言編寫,例如網路服務描述語言(WSDL)。使用諸如WSDL之類的語言允許諸如在各種SOAP框架中自動產生客戶端代碼的功能。
一些實施例利用本領域具有通常知識者熟悉的至少一個網路來支援使用各種商業可利用的協定中的任何協定的通訊,例如TCP/IP、OSI、FTP、UPnP、NFS、和CIFS。網路可以是,例如,區域網路、廣域網路、虛擬專用網路、網際網路、內部網路、外部網路、公共交換電話網路、紅外線網路、無線網路、以及任何其中之組合。
在利用Web伺服器的實施例中,Web伺服器可以運行各種伺服器或中間層應用程式中的任意一者,包括HTTP伺服器、FTP伺服器、CGI伺服器、資料伺服器、Java伺服器、和商業地圖伺服器。伺服器亦可以能夠回應來自使用者裝置的請求而執行程式或腳本,例如透過執行一或多個Web應用程式,該Web應用程式可實施為以任何程式語言編寫的一或多個腳本或程式,該程式語言例如Java、C、C#、或C++,或任何腳本語言,如Perl、Python、或TCL、以及它們的組合。伺服器亦可包括資料庫伺服器,包括但不限於可由Oracle、Microsoft、Sybase、和IBM商業獲得的資料庫伺服器。
如上所述,環境可包括各種資料儲存和其他記憶體和儲存媒體。這些可以駐留在各種位置,例如在一或多個電腦本端(和/或駐留在其中)或者是離網路上的任何或所有的電腦遠端的儲存媒體上。在一組特定的實施例中,資訊可以駐留在本領域具有通常知識者熟悉的儲存區域網路(「SAN」)中。類似地,用於實行屬於電腦、伺服器、或其他網路裝置的功能的任何必要檔案可以適當地於本端和/或遠端儲存。在系統包括電腦化裝置的情況中,每個這樣的裝置可以包括可經由匯流排電耦接的硬體元件,這些元件包括,例如,至少一個中央處理單元(CPU)、至少一個輸入裝置(例如滑鼠、鍵盤(keyboard)、控制器、觸碰螢幕、或鍵板(keypad))、以及至少一個輸出裝置(例如顯示裝置、印表機、或揚聲器)。這樣的系統亦可包括一或多個儲存裝置,例如磁碟驅動、光儲存裝置、和固態儲存裝置,例如隨機存取記憶體(「RAM」)或唯獨記憶體(「ROM」),以及可移除媒體裝置、記憶卡、快閃卡等。
這樣的裝置亦可包括電腦可讀取儲存媒體讀取器、通訊裝置(例如數據機、網路卡(無線或有線的)、紅外線通訊裝置等)、以及如述的工作記憶體。電腦可讀取儲存媒體讀取器可以與電腦可讀取儲存媒體連接或經配置以接收電腦可讀取儲存媒體,該電腦可讀取儲存媒體代表遠端的、本端的、固定的、和/或可移除的儲存裝置以及用於暫時和/或更永久地包含、儲存、傳輸、和取得電腦可讀取資訊的儲存媒體。系統和各種裝置亦通常會包括位於至少一個工作記憶體裝置內的許多軟體應用程式、模組、服務、或其他元件,包括作業系統和應用程式,例如客戶端應用程式或Web瀏覽器。應理解替代實施例可以具有與上述實施例的各種變化。例如,也可以使用客製化硬體,且/或可以用硬體、軟體(包括可攜式軟體,例如小程式(applets))、或兩者來實施特定元件。此外,與例如網路輸入/輸出裝置的其他計算裝置的連接可被利用。
用於包含代碼或代碼的部分的儲存媒體和電腦可讀取媒體可包括本領域已知或已使用的任何合適的媒體,包括儲存媒體和通訊媒體,例如但不限於,揮發性和非揮發性、以任意方法或技術用於儲存和/或傳輸資訊的可移除和不可移除媒體,例如電腦可讀取指令、資料結構、程式模組、或其他資料,包括RAM、ROM、EEPROM、快閃記憶體、或其他記憶體技術、CD-ROM、數位多功能碟(DVD)、或其他光學儲存、磁匣、磁帶、磁碟儲存、或其他磁性儲存裝置、或可用於儲存所欲之資訊並且可由系統裝置存取的任何其他媒體。基於本文提供的揭示和教導,本領域具有通常知識者將理解實施各種實施例的其他方式和/或方法。
因此,說明書和圖式應被視為是說明性而非限制意義。然而,顯而易見的是,在不脫離本文的更廣泛精神與範疇的情況下,可以進行各種修改和改變。
提供對本技術的描述是為了使本領域具有通常知識者能夠實施所描述的各種實施例。儘管已參考各種圖示和實施例具體描述了本技術,應理解,這些僅用於說明之目的,而不應被視為限制本技術的範疇。
可能有許多其他方式來實施本技術。在不脫離本技術的範疇的情況下,本文描述的各種功能和元件可以與所示出的那些不同地劃分。對這些實施例的各種修改對於本領域具有通常知識者來說將是顯而易見的,並且本文定義的一般原理可以應用於其他實施例。因此,在不脫離本技術的範疇的情況下,本領域具有通常知識者將可對本技術進行許多改變和修改。
解釋
在本說明書中對任何先前技術的引用並不構成承認此先前技術形成通常知識的一部分。
在不同的權力範圍內,認可用語「包括(comprise)」、「包括(comprises)」、和「包括(comprising)」可歸為獨有或者包含的含義。出於本說明書之目的,除非另有說明,否則這些用語旨在具有包含性含義 - 亦即,它們將被視為表示包含所使用的直接引用的所列元件,並且可能也包括其他非-指定的元件或元素。除非特別說明,否則對單數元件的參照並不意味著「一個且只有一個」,而是「一或多個」。用語「一些(some)」指的是一或多個。標題和子標題僅用於方便,而不限制本技術,並且不涉及對本技術的描述的解釋。
應理解,所揭露的程序中的步驟的任何特定順序或層次是範例方式的說明。基於設計的偏好,應當理解,可以重新排列程序中的步驟的特定順序或層次,或者僅實行所示步驟的一部分。一些步驟可以同時地進行。例如,在某些情況中,多工和平行處理可能是有利的。此外,上述實施例中的各種系統元件的分離不應被理解為在所有實施例中都需要這樣的分離,並且應理解,所描述的程式元件和系統通常可以一起整合在單個軟體產品中或包裝成多個軟體產品。
提供前面的描述是為了使本領域具有通常知識者能實踐本文描述的各種態樣。對本領域具有通常知識者而言,對這些態樣的各種修改是顯而易見的,並且本文定義的一般原理可以應用於其他態樣。因此,申請專利範圍不旨在限於本文所示的態樣,而是與符合申請專利範圍語言一致的完整範疇。
儘管已透過其中之實施例的描述來說明本發明,且儘管已詳細描述了實施例,但並不意味著這些限制,或是以任何方式,將隨附申請專利範圍的範疇限制於這些細節。此外,上述實施例可以單獨實施,或者可以在相容的情況下組合。本領域具有通常知識者將容易想到其他優點和修改,包括上述實施例的組合。因此,本發明在其更廣泛的態樣上不限於特定細節、代表性設備和方法、及所示和描述的說明性範例。因此,在不脫離本發明整體發明概念的精神或範疇的之下,可以偏離這些細節。
100‧‧‧步驟
101‧‧‧步驟
102‧‧‧步驟
103‧‧‧步驟
104‧‧‧步驟
200‧‧‧步驟
201‧‧‧對象
202‧‧‧對象
203‧‧‧對象
204‧‧‧視圖
205‧‧‧視圖
211‧‧‧對象
212‧‧‧對象
213‧‧‧對象
300‧‧‧緩衝
301‧‧‧模式
302‧‧‧模式
303‧‧‧模式
311‧‧‧幀
312‧‧‧幀
313‧‧‧幀
314‧‧‧緩衝
321‧‧‧幀
322‧‧‧幀
323‧‧‧幀
324‧‧‧幀
401‧‧‧模式
402‧‧‧模式
403‧‧‧模式
411‧‧‧幀
413‧‧‧幀
414‧‧‧緩衝
442‧‧‧幀
501‧‧‧資料
502‧‧‧資料
503‧‧‧資料
504‧‧‧資料
505‧‧‧資料
511‧‧‧區域
512‧‧‧區域
513‧‧‧區域
521‧‧‧模式
611‧‧‧區域
612‧‧‧區域
621‧‧‧模式
711‧‧‧區域
712‧‧‧區域
721‧‧‧模式
801‧‧‧幀緩衝
802‧‧‧模板緩衝
803‧‧‧幀緩衝
804‧‧‧輸出
901‧‧‧模式
902‧‧‧模式
903‧‧‧模式
911‧‧‧幀
912‧‧‧幀
913‧‧‧幀
914‧‧‧緩衝
915‧‧‧模板緩衝
921‧‧‧幀
922‧‧‧幀
923‧‧‧幀
1001‧‧‧步驟
1002‧‧‧步驟
1003‧‧‧步驟
1004‧‧‧步驟
1005‧‧‧步驟
1006‧‧‧步驟
1101‧‧‧步驟
1102‧‧‧步驟
1103‧‧‧步驟
1201‧‧‧步驟
1202‧‧‧步驟
1203‧‧‧步驟
1301‧‧‧步驟
1302‧‧‧步驟
1303‧‧‧步驟
1401‧‧‧步驟
1402‧‧‧步驟
1403‧‧‧步驟
1500‧‧‧壓縮系統
1505‧‧‧記憶體
1510‧‧‧中央處理單元
1520‧‧‧圖形處理單元
1525‧‧‧I/O控制器
1565‧‧‧儲存裝置
1575‧‧‧匯流排
1580‧‧‧匯流排
1585‧‧‧匯流排
包含於並構成說明書中一部分的隨附圖式示出了本發明的實施例,並且與上文給出的本發明的一般描述以及下文給出的實施例的詳細描述一起用以解釋本發明的原理,其中:
1 是根據一個實施例的使用基於字典的壓縮來編碼原始輸入資料的範例方法的流程圖;
2 說明了在3D圖形呈現(rendering)中使用Z緩衝;
3 說明了使用Z緩衝來壓縮的第一個範例;
4 說明了使用Z緩衝來壓縮的第二個範例;
5 說明了在資料壓縮中使用萬用字元模板的第一個範例;
6 說明了在資料壓縮中使用萬用字元模板的第二個範例;
7 說明了在資料壓縮中使用萬用字元模板的第三個範例;
8 說明了模板緩衝與Z緩衝協同工作的使用;
9 說明了模板緩衝與Z緩衝協同工作來編碼的使用;
10 說明了用於調整編碼字典的範例方式;
11 說明了透過位元縮緊(bit-packing)來熵編碼的範例方式;
12 說明了使用模板對稱的範例方式;
13 說明了用於判定差分模板的範例方式;
14 說明了根據一個實施例的用於解碼使用基於字典的壓縮編碼來編碼的資料的範例方式;和
15 示出了用於實行一或多種方法的範例系統。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無

Claims (48)

  1. 一種用於壓縮資料的設備,該設備包括: 一處理器;與該處理器相關聯的記憶體;和一Z緩衝(Zbuffer);其中該Z緩衝用以識別表示未壓縮資料的短語(phrases)。
  2. 如請求項1所述之設備,其中一或多個短語是重疊的被遮擋(occluded)的短語。
  3. 如請求項2所述之設備,其中預先分配最低排序的重疊的被遮擋的短語。
  4. 如請求項3所述之設備,其中預先分配複數個最低排序的重疊的被遮擋的短語,該Z緩衝被用以識別表示該未壓縮資料的短語,且所得到的短語被存取以識別最佳壓縮該資料的短語。
  5. 如請求項第2項至第4項中任一項所述之設備,進一步包括一模板緩衝,其中該模板緩衝與該Z緩衝結合使用以將萬用字元(wildcard)短語儲存在一遮擋的短語內。
  6. 如請求項5所述之設備,其中在處理期間,該Z緩衝和該模板緩衝互動,使得在一短語中存在萬用字元的情況下,來自該Z緩衝的一較低深度的短語的資料通過。
  7. 如請求項第1項至第6項中任一項所述之設備,其中該等短語是從一字典獲得的。
  8. 如請求項第1項至第7項中任一項所述之設備,其中該等短語是由該設備從該資料所產生。
  9. 如請求項第1項至第8項中任一項所述之設備,其中該等短語是用於插入至一壓縮字典中。
  10. 如請求項第1項至第9項中任一項所述之設備,其中如果一經識別的短語不在該壓縮字典中,則將該短語增加到該壓縮字典中。
  11. 如請求項第1項至第10項中任一項所述之設備,其中一短語被表示為一函式。
  12. 如請求項11所述之設備,其中該函式由一標籤參照,且該函式採用參數,且其中該短語由該標籤和該等參數表示。
  13. 如請求項第11項或第12項所述之設備,其中一短語由一雜湊碼(hash code)表示,該雜湊碼對應於複數個函式。
  14. 如請求項第1項至第13項中任一項所述之設備,其中該Z緩衝被用以基於一或多個經識別的短語來編碼未壓縮的資料。
  15. 一種壓縮資料的方法設備,該方法包括以下步驟: 使用一Z緩衝識別表示未壓縮資料的短語。
  16. 如請求項15所述之方法,其中一或多個短語是重疊的被遮擋(occluded)的短語。
  17. 如請求項16所述之方法,其中預先分配最低排序的重疊的被遮擋的短語。
  18. 如請求項17所述之方法,其中預先分配複數個最低排序的重疊的被遮擋的短語,該方法進一步包括以下步驟: 使用該Z緩衝識別表示未壓縮的該資料的短語;及存取所得到的短語以識別最佳壓縮該資料的短語。
  19. 如請求項第16項至第18項中任一項所述之方法,進一步包括以下步驟:使用一模板緩衝結合該Z緩衝來將萬用字元短語儲存在一遮擋的短語內。
  20. 如請求項19所述之方法,其中在處理期間,該Z緩衝和該模板緩衝互動,使得在一短語中存在萬用字元的情況下,來自該Z緩衝的一較低深度的短語的資料通過。
  21. 如請求項第15項至第19項中任一項所述之方法,進一步包括以下步驟:從一字典獲得該等短語。
  22. 如請求項第15項至第21項中任一項所述之方法,進一步包括以下步驟:從該資料產生該等短語。
  23. 如請求項第15項至第22項中任一項所述之方法,其中該等短語是用於插入至一壓縮字典中。
  24. 如請求項第15項至第23項中任一項所述之方法,進一步包括以下步驟: 判定一經識別的短語不在該壓縮字典中;及將該短語增加到該壓縮字典中。
  25. 如請求項第15項至第24項中任一項所述之方法,其中一短語被表示為一函式。
  26. 如請求項第25項所述之方法,其中該函式由一標籤參照,且該函式採用參數,且其中該短語由該標籤和該等參數表示。
  27. 如請求項第25項或第26項所述之方法,其中一短語由一雜湊碼(hash code)表示,該雜湊碼對應於複數個函式。
  28. 如請求項第15項至第27項中任一項所述之方法,進一步包括以下步驟:使用該Z緩衝來基於所識別的短語中的一或多個短語來編碼未壓縮的資料。
  29. 一種用於解壓縮經壓縮的資料的設備,該設備包括: 一處理器;與該處理器相關聯的記憶體;和一Z緩衝;其中該Z緩衝被用以透過組合一組重疊的被遮擋的短語來產生解壓縮的資料。
  30. 如請求項29所述之設備,其中該短語是重疊的被遮擋的短語。
  31. 如請求項第29項或第30項所述之設備,進一步包括:一模板緩衝,其中該模板緩衝與該Z緩衝結合使用以將萬用字元(wildcard)短語儲存在一遮擋的短語內。
  32. 如請求項31所述之設備,其中在解壓縮期間,該Z緩衝和該模板緩衝互動,使得在一短語中存在萬用字元的情況下,來自該Z緩衝的一較低深度的短語的資料通過。
  33. 如請求項第29項至第32項中任一項所述之設備,其中該經壓縮的資料包含碼字(codewords),且該等短語是透過查詢在一字典中的該等碼字來獲得的。
  34. 如請求項33所述之設備,其中該字典中的該等碼字包含多個短語,並且其中該經壓縮的資料包含一或多個校驗和(checksum)。
  35. 如請求項34所述之設備,其中該處理器經配置以使用每個短語平行地解壓縮該經壓縮的資料、計算與該解壓縮相關聯的一校驗和、將所計算的該校驗和與該經壓縮的資料中所包含的該校驗和進行比較、並基於該比較來判定要使用哪個階段。
  36. 如請求項第29項至第35項中任一項所述之設備,其中該處理器經程式化以透過執行一或多個函式來解壓縮該經壓縮的資料。
  37. 如請求項36所述之設備,其中一函式由一標籤參照,且該函式採用參數,且其中該經壓縮的資料包含該標籤和該等參數。
  38. 一種用於解壓縮經壓縮的資料的方法,該方法包括以下步驟: 使用一Z緩衝透過組合一組重疊的被遮擋的短語來產生解壓縮的資料。
  39. 如請求項38所述之方法,其中該短語是重疊的被遮擋的短語。
  40. 如請求項第38項或第39項所述之方法,進一步包括以下步驟:使用一模板緩衝結合該Z緩衝來將萬用字元短語儲存在一遮擋的短語內。
  41. 如請求項40所述之方法,其中在解壓縮期間,深度和該模板緩衝互動,使得在一短語中存在萬用字元的情況下,來自該Z緩衝的一較低深度的短語的資料通過。
  42. 如請求項第38項至第41項中任一項所述之方法,其中該經壓縮的資料包含碼字,該方法進一步包括以下步驟: 透過在字典中查詢該等碼字來獲得該等短語。
  43. 如請求項42所述之方法,其中該字典中的該等碼字包含多個短語,並且其中該經壓縮的資料包含一或多個校驗和(checksum)。
  44. 如請求項43所述之方法,進一步包括以下步驟: 使用每個短語平行解壓縮該經壓縮的資料;計算與該解壓縮相關的一校驗和;將計算的該校驗和與在該經壓縮的資料中所包含的校驗和相比較;和根據該比較判定使用哪個階段。
  45. 如請求項第37項至第44項中任一項所述之方法,進一步包括以下步驟:透過執行一或多個函式來解壓縮該經壓縮的資料。
  46. 如請求項45所述之方法,其中一函式由一標籤參照,且該函式採用參數,且其中該經壓縮的資料包含該標籤和該等參數。
  47. 一種電腦程式產品,其包括指令,當該等指令由一電腦執行時,使得處理器實行請求項第15項至第28項或第38項至第46項中任一項所述之方法。
  48. 一種非暫態電腦可讀取媒體,其包括指令,當該等指令由一電腦執行時,使得處理器實行請求項第15項至第28項或第38項至第46項中任一項所述之方法。
TW107131828A 2017-09-11 2018-09-11 基於字典的資料壓縮 TW201921844A (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201762556902P 2017-09-11 2017-09-11
US201762556896P 2017-09-11 2017-09-11
US201762556909P 2017-09-11 2017-09-11
US62/556,902 2017-09-11
US62/556,896 2017-09-11
US62/556,909 2017-09-11

Publications (1)

Publication Number Publication Date
TW201921844A true TW201921844A (zh) 2019-06-01

Family

ID=65634478

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107131828A TW201921844A (zh) 2017-09-11 2018-09-11 基於字典的資料壓縮

Country Status (3)

Country Link
US (1) US11171665B2 (zh)
TW (1) TW201921844A (zh)
WO (1) WO2019050418A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11171665B2 (en) 2017-09-11 2021-11-09 Nyriad Limited Dictionary-based data compression
US11463559B1 (en) 2021-08-24 2022-10-04 Lyft, Inc. Compressing digital metrics for transmission across a network utilizing a graph-based compression dictionary and time slice delta compression
CN117112718B (zh) * 2023-10-16 2024-01-26 达文恒业科技(深圳)有限公司 一种车载电脑系统数据快速存储方法

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5561421A (en) 1994-07-28 1996-10-01 International Business Machines Corporation Access method data compression with system-built generic dictionaries
US5864342A (en) * 1995-08-04 1999-01-26 Microsoft Corporation Method and system for rendering graphical objects to image chunks
US6057847A (en) * 1996-12-20 2000-05-02 Jenkins; Barry System and method of image generation and encoding using primitive reprojection
US6724391B1 (en) * 2000-06-30 2004-04-20 Intel Corporation Mechanism for implementing Z-compression transparently
US20030086620A1 (en) * 2001-06-27 2003-05-08 Lucco Steven E. System and method for split-stream dictionary program compression and just-in-time translation
US6667700B1 (en) * 2002-10-30 2003-12-23 Nbt Technology, Inc. Content-based segmentation scheme for data compression in storage and transmission including hierarchical segment representation
US7164370B1 (en) 2005-10-06 2007-01-16 Analog Devices, Inc. System and method for decoding data compressed in accordance with dictionary-based compression schemes
US7882084B1 (en) * 2005-12-30 2011-02-01 F5 Networks, Inc. Compression of data transmitted over a network
US20090198716A1 (en) * 2008-02-04 2009-08-06 Shawn Allen Howarth Method of building a compression dictionary during data populating operations processing
US7889102B2 (en) * 2009-02-26 2011-02-15 Red Hat, Inc. LZSS with multiple dictionaries and windows
KR101740039B1 (ko) * 2009-06-26 2017-05-25 톰슨 라이센싱 적응형 기하학적 분할을 이용한 비디오 인코딩 및 디코딩 방법 및 장치
US8452932B2 (en) 2010-01-06 2013-05-28 Storsimple, Inc. System and method for efficiently creating off-site data volume back-ups
US8522125B1 (en) 2010-04-09 2013-08-27 The Research Foundation Of State University Of New York System and method for efficient horizontal maximum distance separable raid
EP2384001A1 (en) * 2010-04-29 2011-11-02 Alcatel Lucent Providing of encoded video applications in a network environment
US8631269B2 (en) 2010-05-21 2014-01-14 Indian Institute Of Science Methods and system for replacing a failed node in a distributed storage network
US8640137B1 (en) 2010-08-30 2014-01-28 Adobe Systems Incorporated Methods and apparatus for resource management in cluster computing
US8630983B2 (en) 2011-08-27 2014-01-14 Accenture Global Services Limited Backup of data across network of devices
US8872677B2 (en) * 2013-03-15 2014-10-28 Dialogic Networks (Israel) Ltd. Method and apparatus for compressing data-carrying signals
US8792279B2 (en) 2012-11-09 2014-07-29 Sandisk Technologies Inc. Architectures for data analytics using computational NAND memory
US8811085B2 (en) 2012-11-09 2014-08-19 Sandisk Technologies Inc. On-device data analytics using NAND flash based intelligent memory
US8634248B1 (en) 2012-11-09 2014-01-21 Sandisk Technologies Inc. On-device data analytics using NAND flash based intelligent memory
US9239855B2 (en) 2012-12-04 2016-01-19 Pixia Corp. Method and system of retrieving data in a data file
WO2014097353A1 (ja) * 2012-12-19 2014-06-26 富士通株式会社 圧縮装置、圧縮方法、圧縮プログラム、伸張装置、伸張方法、伸張プログラム、および圧縮伸張システム
US8924741B2 (en) 2012-12-29 2014-12-30 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
GB2509709A (en) 2013-01-09 2014-07-16 Ibm Transparent encryption/decryption gateway for cloud storage services
US9483657B2 (en) 2013-01-14 2016-11-01 Accenture Global Services Limited Secure online distributed data storage services
US9110592B2 (en) 2013-02-04 2015-08-18 Microsoft Technology Licensing, Llc Dynamic allocation of heterogenous memory in a computing system
US9223789B1 (en) 2013-03-14 2015-12-29 Amazon Technologies, Inc. Range retrievals from archived data objects according to a predefined hash tree schema
US9195542B2 (en) 2013-04-29 2015-11-24 Amazon Technologies, Inc. Selectively persisting application program data from system memory to non-volatile data storage
US9075557B2 (en) 2013-05-15 2015-07-07 SanDisk Technologies, Inc. Virtual channel for data transfers between devices
US9244958B1 (en) 2013-06-13 2016-01-26 Amazon Technologies, Inc. Detecting and reconciling system resource metadata anomolies in a distributed storage system
US9213653B2 (en) 2013-12-05 2015-12-15 Intel Corporation Memory integrity
CA2935559C (en) * 2014-01-02 2018-11-20 Vid Scale, Inc. Two-dimensional palette coding for screen content coding
US10244223B2 (en) * 2014-01-10 2019-03-26 Ostendo Technologies, Inc. Methods for full parallax compressed light field 3D imaging systems
US10542274B2 (en) * 2014-02-21 2020-01-21 Microsoft Technology Licensing, Llc Dictionary encoding and decoding of screen content
US11171665B2 (en) 2017-09-11 2021-11-09 Nyriad Limited Dictionary-based data compression
US10491240B1 (en) * 2019-01-17 2019-11-26 Cyborg Inc. Systems and methods for variable length codeword based, hybrid data encoding and decoding using dynamic memory allocation

Also Published As

Publication number Publication date
WO2019050418A1 (en) 2019-03-14
US20200274550A1 (en) 2020-08-27
US11171665B2 (en) 2021-11-09

Similar Documents

Publication Publication Date Title
US6587057B2 (en) High performance memory efficient variable-length coding decoder
US6154542A (en) Method and apparatus for simultaneously encrypting and compressing data
US20080005648A1 (en) Data compression
TW201921844A (zh) 基於字典的資料壓縮
JP5733935B2 (ja) デジタルコンテンツ符号器、復号器、検索装置、符号化方法、検索方法および記憶装置
JP5750786B2 (ja) Simd命令を用いるrdpビットマップハッシュアクセラレーション
JP2002533005A (ja) 可変長から可変長へのエントロピー符号化のためのコードブック構成
KR20040077921A (ko) 가변 길이 칼라 코드들로 팔레트화된 칼라 화상들의 압축
US6919826B1 (en) Systems and methods for efficient and compact encoding
US20090204626A1 (en) Systems and methods for information compression
US7652596B1 (en) Variable-length compression technique for encoding or decoding a sequence of integers
Saravanan et al. Enhancing efficiency of huffman coding using Lempel Ziv coding for image compression
JP2017530592A (ja) 適応率圧縮ハッシュ処理デバイス
WO2010044099A1 (en) Lossless content encoding
US7123656B1 (en) Systems and methods for video compression
WO2001010036A1 (en) Memory efficient variable-length encoding/decoding system
KR100674937B1 (ko) 컨텍스트 적응형 이진 산술 복호화 장치
US20160191075A1 (en) Efficient data encoding
US10230391B2 (en) Compression and/or encryption of a file
US20060039614A1 (en) Methods and apparatus for implementing JPEG 2000 encoding operations
US8010510B1 (en) Method and system for tokenized stream compression
Niemi et al. Interpolative coding as an alternative to arithmetic coding in bi-level image compression
AU2020310810B2 (en) Real-time history-based byte stream compression
JP2005521324A (ja) 損失のないデータの圧縮および圧縮解除方法および装置
Blanes et al. Redundancy and optimization of tANS entropy encoders