TW201707388A - 於虛擬記憶體系統中之經改善壓縮快取 - Google Patents

於虛擬記憶體系統中之經改善壓縮快取 Download PDF

Info

Publication number
TW201707388A
TW201707388A TW105114494A TW105114494A TW201707388A TW 201707388 A TW201707388 A TW 201707388A TW 105114494 A TW105114494 A TW 105114494A TW 105114494 A TW105114494 A TW 105114494A TW 201707388 A TW201707388 A TW 201707388A
Authority
TW
Taiwan
Prior art keywords
input
input word
word
stream
lookback
Prior art date
Application number
TW105114494A
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 TW201707388A publication Critical patent/TW201707388A/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/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • H03M7/4037Prefix coding
    • H03M7/4043Adaptive prefix coding
    • H03M7/4062Coding table adaptation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • 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/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • 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/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • 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/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
    • H03M7/48Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind alternating with other codes during the code conversion process, e.g. run-length coding being performed only as long as sufficientlylong runs of digits of the same kind are present
    • 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
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data

Landscapes

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

Abstract

本發明揭示資料壓縮系統、方法及電腦程式產品。對於一輸入串流之每一連續輸入字,判定該輸入字是否匹配一回看表中之一條目。回應於該輸入字而更新該回看表。輸入字可具有許多資料類型,包括零延行及與該回看表中之一條目的完全或部分匹配。一碼字係藉由熵編碼對應於該輸入字之一資料類型而產生。該回看表可由該輸入字在該輸入串流中之位置而索引。

Description

於虛擬記憶體系統中之經改善壓縮快取 [對相關申請案之交叉參考]
特此主張2015年5月11日申請之名為「IMPROVED COMPRESSED CACHING IN A VIRTUAL MEMORY SYSTEM」的美國臨時專利申請案第62/159,871號及2015年7月14日申請之名為「IMPROVED COMPRESSED CACHING IN A VIRTUAL MEMORY SYSTEM」的美國臨時專利申請案第62/192,136號之權利,且其說明書被以引用之方式全部併入本文中。
諸如桌上型電腦、膝上型電腦或平板電腦、智慧型電話、攜帶型數位助理、攜帶型遊戲控制台等之計算裝置包括諸如中央處理單元、圖形處理單元、數位信號處理器等之一或多個處理器及一或多個記憶體。諸如電腦周邊裝置之其他電子裝置以及傳統上不被稱作計算裝置之消費型電子裝置亦可包括一或多個處理器及記憶體。
一些類型之裝置(諸如,攜帶型裝置)可具有與處理器所需要的數量有關之有限數量的實體系統記憶體(儲存器)容量。常被稱為虛擬記憶體及分頁之技術可用於解決有限實體系統記憶體之問題。虛擬記憶體指可由處理器存取的較大「虛擬」位址空間至系統記憶體(諸如,動態隨機存取記憶體(「DRAM」))在其中操作之較小實體位址空間的映射。分頁傳統上已指在系統記憶體與非揮發性儲存器或其他次級儲 存器(諸如,磁碟機或快閃記憶體)之間傳送資訊之技術。處理器不需要立即存取之頁面經自系統記憶體收回至次級儲存器內。在攜帶型裝置或具有有限數量次級儲存器或存取次級儲存器以增加之延遲為代價之其他裝置中,分頁已演進以包括以壓縮形式在系統記憶體中儲存經收回頁面而非在次級儲存器中儲存經收回頁面。此技術可被稱作壓縮快取。
已知若干壓縮快取方法,包括LZ及WKDM。在WKDM方法中,在頁面中之連續輸入字係藉由維持遇到的最後16個唯一輸入字之回看表及產生將每一輸入字分類之標籤或碼字來處理。僅存在四個碼字(其因此可由兩個位元表示):一指示輸入字為全零的第一碼字(例如,「00」);一指示輸入字完全匹配回看表中之16個條目中之一者的第二碼字(例如,「01」);一指示輸入字僅部分地(亦即,僅最高有效位元)匹配回看表中之條目中之一者的第三碼字(例如,「10」);及一指示輸入字不匹配回看表中之條目中之任一者的第四碼字(例如,「11」)。壓縮輸出包含:碼字;使指示完全字匹配之彼等碼字與回看表中之匹配條目有關的索引之表;不完全匹配回看表中之任何條目的輸入字;及部分匹配回看表中之條目的輸入字之不匹配部分(亦即,最低有效位元)。在輸入字上採用散列函數以提供有效率地索引至回看表。
揭示用於壓縮及解壓縮資料串流的系統、方法及電腦程式。
在用於壓縮輸入串流之一例示性方法中,對於輸入串流之每一連續輸入字,判定輸入字是否匹配回看表中之條目。回應於輸入字而更新回看表。碼字係藉由熵編碼對應於輸入字之資料類型而產生。輸入字可具有複數個資料類型。資料類型包括指示輸入字與回看表中之一條目之間的完全匹配之至少一第一資料類型及指示輸入字與回看表 中之一條目之間的部分匹配之一第二資料類型。產生包括碼字之輸出串流。
用於壓縮輸入串流之一例示性系統包括一記憶體及一處理器。處理器經組態以自記憶體讀取連續輸入字。對於輸入串流之每一連續輸入字,處理器判定輸入字是否匹配回看表中之一條目。處理器回應於輸入字而更新回看表。處理器藉由熵編碼對應於輸入字之一資料類型而產生一碼字。輸入字可具有複數個資料類型。資料類型包括指示輸入字與回看表中之一條目之間的匹配之至少一第一資料類型及指示輸入字與回看表中之一條目之間的部分匹配之一第二資料類型。處理器產生包括碼字之一輸出串流。
用於壓縮一輸入串流之一例示性電腦程式產品包括體現於非暫時性儲存媒體中之電腦可執行邏輯。藉由處理器執行邏輯將處理器組態以針對輸入串流之每一連續輸入字判定輸入字是否匹配回看表中之一條目。處理器回應於輸入字而更新回看表。處理器藉由熵編碼對應於輸入字之一資料類型而產生一碼字。輸入字可具有複數個資料類型。資料類型包括指示輸入字與回看表中之一條目之間的完全匹配之至少一第一資料類型及指示輸入字與回看表中之一條目之間的部分匹配之一第二資料類型。處理器產生包括碼字之一輸出串流。
100‧‧‧處理系統
102‧‧‧處理器
104‧‧‧系統記憶體
106‧‧‧互連件
108‧‧‧資料壓縮邏輯
110‧‧‧輸入邏輯
112‧‧‧熵編碼邏輯
114‧‧‧延行長度邏輯
116‧‧‧回看表邏輯
118‧‧‧輸出邏輯
120‧‧‧輸入資料
122‧‧‧輸出資料
400‧‧‧回看表結構
500‧‧‧回看表
502‧‧‧輸入串流之一例示性部分
602‧‧‧輸出串流之一部分
604‧‧‧碼字
606‧‧‧碼字
608‧‧‧碼字
610‧‧‧輸出串流之一部分
612‧‧‧碼字
614‧‧‧輸入字之複本或執行個體
616‧‧‧輸出串流之一部分
618‧‧‧碼字
620‧‧‧位置之指示
622‧‧‧輸出串流之一部分
624‧‧‧碼字
626‧‧‧位置之指示
628‧‧‧輸入字之不匹配部分
700‧‧‧攜帶型通信裝置
702‧‧‧晶片上系統
704‧‧‧中央處理單元(CPU)
706‧‧‧類比信號處理器
708‧‧‧顯示控制器
710‧‧‧觸控螢幕控制器
712‧‧‧觸控螢幕顯示器
714‧‧‧視訊編碼器
716‧‧‧視訊放大器
718‧‧‧視訊埠
720‧‧‧USB控制器
722‧‧‧USB埠
724‧‧‧記憶體
726‧‧‧用戶識別模組(SIM)卡
728‧‧‧數位相機
730‧‧‧立體聲音訊編解碼器
732‧‧‧音訊放大器
734‧‧‧第一立體聲揚聲器
736‧‧‧第二立體聲揚聲器
738‧‧‧麥克風放大器
740‧‧‧麥克風
742‧‧‧頻率調變(FM)無線電調諧器
744‧‧‧FM天線
746‧‧‧立體聲頭戴式耳機
748‧‧‧射頻(RF)收發器
750‧‧‧RF交換器
752‧‧‧RF天線
754‧‧‧小鍵盤
756‧‧‧具有麥克風之單聲道耳機
758‧‧‧振動器裝置
760‧‧‧電源供應器
在圖式中,除非另有指示,否則相似參考數字指貫穿各種視圖的相似部分。對於諸如「102A」或「102B」的具有字母字符名稱之參考數字而言,字母字符名稱可區分同一圖中存在的兩個相似之部分或元件。當意欲參考數字涵蓋所有圖中具有相同參考數字之所有部分時,可省略參考數字之字母字符名稱。
圖1為具有一資料壓縮特徵的一處理系統之方塊圖。
圖2為說明用於壓縮資料之一例示性方法之流程圖。
圖3為說明用於壓縮資料之一例示性方法之另一流程圖。
圖4為說明使用散列函數存取回看表之概念圖。
圖5為說明由輸入串流中之輸入字位置索引回看表條目之概念圖。
圖6A為說明包含針對零延行之一碼字的輸出串流之一部分之資料結構圖。
圖6B為說明包含針對不匹配之一碼字及不匹配完全輸入字的輸出串流之一部分之資料結構圖。
圖6C為說明包含針對完全匹配之一碼字及匹配字在輸入串流中之位置的輸出串流之一部分之資料結構圖。
圖6D為說明包含針對部分匹配之一碼字、部分匹配字在輸入串流中之位置及輸入字之不匹配部分的輸出串流之一部分之資料結構圖。
圖7為具有一或多個具有資料壓縮特徵之處理系統的一攜帶型計算裝置之方塊圖。
詞「例示性」在本文中用以意謂「充當實例、例子或說明」。在本文中被描述為「例示性」之任何態樣不必解釋為比其他態樣更佳或有利。
術語「組件」、「資料庫」、「模組」、「系統」及類似者意欲指代電腦相關實體,其為硬體、韌體、硬體與軟體之組合、軟體或執行中軟體。舉例而言,組件可為(但不限於)在處理器上執行之處理程序、處理器、物件、可執行程式、執行緒、程式及/或電腦。借助於說明,在計算裝置上執行之應用程式及計算裝置兩者皆可為組件。一或多個組件可駐留於處理程序及/或執行緒內,且一組件可位於一個電腦上及/或分佈於兩個或兩個以上電腦之間。另外,此等組件可自上 面儲存有各種資料結構之各種電腦可讀媒體執行。組件可諸如根據具有一或多個資料封包之信號(例如,來自借助於信號與本端系統、分散式系統中之另一組件及/或跨諸如網際網路之網路而與其他系統互動的一個組件之資料)借助於本端及/或遠端處理程序而通信。
術語「應用程式」或「影像」亦可包括具有可執行內容之檔案,諸如:目標碼、指令碼、位元組碼、標示語言檔案及修補程式。此外,本文中所提及之「應用程式」亦可包括在本質上不可執行之檔案,諸如,可能需要打開之文獻或其他需要存取之資料檔案。
術語「內容」亦可包括具有可執行內容之檔案,諸如:目標碼、指令碼、位元組碼、標示語言檔案及修補程式。另外,本文中所提及之「內容」亦可包括本質上不可執行之檔案,諸如,可能需要打開之文獻或其他需要存取之資料檔案。
術語「任務」可包括處理程序、執行緒或裝置中之任何其他執行單元。可同義使用術語「方法」與「處理程序」。
術語「虛擬記憶體」指實際實體記憶體自正參考記憶體的應用程式或影像之抽象化。轉譯或映射可用於將虛擬記憶體位址轉換至實體記憶體位址。映射可如1對1一般簡單(例如,實體位址等於虛擬位址)、中等複雜(例如,實體位址等於自虛擬位址之恆定偏移),或映射可為複雜的(例如,每4KB頁面被唯一地映射)。映射可為靜態(例如,一旦起動即執行),或映射可為動態(例如,當記憶體經分配及釋放時連續地演進)。
在本描述中,術語「通信裝置」、「無線裝置」、「無線電話」、「無線通信裝置」與「無線手機」可互換使用。隨著第三代(「3G」)無線技術及第四代(「4G」)之出現,較大頻寬可用性已實現具有更多種無線能力之更多的攜帶型計算裝置。因此,攜帶型計算裝置可包括蜂巢式電話、尋呼機、PDA、智慧型電話、導航裝置或具有無線連接 或鏈路之手持式電腦。
如在圖1中說明,在一例示性實施例中,處理系統100包括一處理器102及一系統記憶體104。處理器102及系統記憶體104可與彼此並與其他裝置(圖1中未示)經由一或多個互連件106(諸如,匯流排)傳遞信號。根據習知計算原理,處理器102在程式設計碼(諸如,作業系統程式碼及應用程式碼(為了清楚起見而未圖示))之控制下操作,該程式設計碼組態處理器102以執行各種功能或方法。此等方法包括本文中所描述之資料壓縮方法。經由此程式碼,處理器102可經組態有與本文中所描述之資料壓縮方法有關的資料壓縮邏輯108。資料壓縮邏輯108可包括:輸入邏輯110、熵編碼邏輯112、延行長度邏輯114、回看表邏輯116及輸出邏輯118。儘管邏輯108至118為達成說明之目的而在概念上展示為儲存或駐留於系統記憶體104中,但應理解,邏輯108至118經由軟體之操作而產生,軟體可儲存於系統記憶體104或另一記憶體(圖1中未示)中。當用邏輯108至118程式化或組態時,處理器102與系統記憶體104之組合通常定義經組態以執行本文中所描述之資料壓縮方法的處理系統100。儘管為了清楚起見圖1中未展示,但除經組態以執行本文中所描述之資料壓縮方法以外,處理系統100亦可經組態以執行習知方法,諸如,作業系統方法及應用程式方法。亦應注意,邏輯108至118或有關軟體元件與其儲存於上面或其以非暫時性形式駐留的媒體(例如,系統記憶體104)的組合通常定義專利詞典中稱為「電腦程式產品」之物。另外,邏輯108至118定義用於執行下文所描述之功能的方式。
根據下文所描述之例示性資料壓縮方法,處理系統100將輸入資料120壓縮成輸出資料122。如由一般熟習此項技術者所理解,輸入資料120以處理器102可直接利用的未經壓縮」或原來形式存在,而輸出資料122以不可由處理器102直接利用但佔據比輸入資料120少的在系 統記憶體104中之儲存空間之經壓縮形式存在。儘管為了說明一例示性實施例,輸入資料120及輸出資料122在概念上展示為駐留或儲存於系統記憶體104中,但應理解,在其他實施例中,此等輸入資料及輸出資料可駐留在任何其他合適之儲存器或通信媒體中。如下文關於例示性方法所描述,輸入資料120係以連續輸入字之串流形式接收,且輸出資料122係以連續輸出字之串流形式產生。
在一例示性實施例中,輸入資料120可根據壓縮快取方案而被壓縮成輸出資料122。舉例而言,快取方案判定處理器102不需要立即存取的輸入資料120之一或多個頁面可經壓縮成輸出資料122,且先前由彼等頁面佔據的系統記憶體104中之空間可用於其他用途。當快取方案指示彼等頁面中之一或多者再次由處理器102需要時,經壓縮頁面可經解壓縮並再次以未經壓縮形式儲存於系統記憶體104中。儘管為了清楚起見如本文中所使用之術語「輸入」及「輸出」指壓縮方法,但應理解,經壓縮資料可充當至對應解壓縮方法之輸入。如此等快取方案在此項技術中被很好地理解,不進一步詳細描述本文中所描述的實施例之快取態樣。
如下文所描述,採用諸如霍夫曼(Huffman)寫碼之熵寫碼。熵寫碼由一般熟習此項技術者很好地理解且因此不在本文中詳細地描述。然而,應認識到,在壓縮輸入資料之前,可判定可能在輸入資料中出現的不同資料類型的出現之相對頻率。舉例而言,如在此項技術中很好地理解,可藉由分析資料之統計上重要樣本而建構直方圖。碼字接著可以將碼字長度與頻率反向相關之方式而指派給資料類型。亦即,較短碼字經指派給較高頻率資料類型,而較長碼字經指派給較低頻率資料類型。下文描述在例示性實施例中編碼之資料類型。
下文描述之系統除了霍夫曼寫碼以外還可應用於其他熵寫碼方案。系統可應用於任何類型基於詞典之寫碼。系統適用於任何類型基 於詞典之寫碼,其中詞典係使用資料串流中發現之模式建置。
舉例而言,系統可適用於諸如增量編碼的其他基於詞典之寫碼方案。如一般熟習此項技術者所理解,增量編碼方案可使用尾碼或首碼與其碼字一起來建置其用於寫碼方案之詞典。此寫碼方案亦可被稱作如由一般熟習此項技術者理解的基於文字、耗損不大寫碼方案。可由系統採用的其他基於詞典之寫碼方案包括WKDM。
系統亦可由最佳效能方法採用,最佳效能方法在選擇較小一組壓縮技術壓縮資料串流之前取樣幾十種壓縮技術。此等無損壓縮技術(諸如WinRAR及7-Zip)係此項技術中已知。系統可用於影像壓縮工具中,諸如,用以儲存Adobe(TM)影像之彼等格式(類似於攜帶型文獻格式(PDF)),以及有損影像壓縮技術(諸如,聯合照相專家小組(JPEG))。系統亦可藉由類似於攜帶型網路圖形(PNG)壓縮之耗損不大影像壓縮技術採用。
如由圖2之流程圖所說明,在一例示性實施例中,上文關於圖1所描述之系統可壓縮輸入串流。如由區塊202所指示,方法以自輸入串流讀取輸入字開始。輸入邏輯110(圖1)可促成此功能並可包括一輸入緩衝器(未圖示)。如由區塊204所指示,方法判定輸入字是否具有零值,亦即,所有位元皆為零。輸入字可由(例如)16個位元、32個位元或任何其他合適數目個位元組成,亦由一般熟習此項技術者所理解。若判定輸入字具有零值,則類似地具有零值之連續輸入字的數目之計數(「ZERO_COUNT」)遞增,如由區塊206所指示。然而,若判定輸入字不具有零值,則判定ZERO_COUNT是否大於零,如由區塊208所指示。輸入字不具有零值但ZERO_COUNT大於零的判定指示零延行已出現。亦即,兩個或兩個以上連續輸入字具有零值。若判定零延行出現,則輸入字經霍夫曼編碼以表示零延行,如由區塊210所指示。亦即,針對長度ZERO_COUNT之零延行的資料類型產生一碼 字。所產生碼字變為輸出串流之一部分。
如在圖6A中說明,可產生包含針對具有零值之兩個或兩個以上連續輸入字之資料類型的許多經產生碼字606至608中之一者的輸出串流之一部分602。如圖6A中由該複數個不同碼字604、606、608等所指示,每一延行長度(「ZERO_COUNT」)經唯一地編碼。亦即,在判定N個不同零延行長度可出現在具有對應數目N個不同頻率的輸入串流中之一實施例中,碼字604至608數目可為N。舉例而言,在可針對具有零值之單一輸入字之資料類型產生碼字604時,可針對具有零值之兩個相連或連續輸入字的資料類型產生碼字606,等,且可針對具有零值之N個相連或連續輸入字的資料類型產生碼字608。為了清楚起見未個別地在圖6A中展示可針對具有零值之三個與N-1個相連或連續輸入字之間的資料類型產生的另外其他碼字,而是由碼字606與608之間的省略號(「...」)符號指示。
根據很好理解之霍夫曼寫碼原理,若判定(例如,藉由直方圖方法或如此項技術中已知的其他合適之方法)X個連續零之延行可能比Y個連續零之延行在輸入資料中更頻繁出現,則X數目個連續零之延行可由比Y數目相連零之延行短的碼字編碼。
方法以區塊212繼續。如由區塊212所指示,將散列函數應用於輸入字。應注意,若如上文關於區塊208所描述偵測到零延行,則輸入字為在零延行之最後零值輸入字之後的輸入字。如在圖4中說明,應用散列函數之結果用以識別或定址回看表結構400中之位置(「LOCATION」)。回看表結構400經組態以在每一位置處儲存值(「VALUE」)及位置(「POSITION」)。換言之,回看表結構400中之每一位置參考值及位置兩者。如下文所描述,位置可用於存取回看表結構400中的對應位置中之值。回看表結構400可具有任何數目個位置,諸如,2048或2k。此回看表結構400因此將經組態以儲存2048個 值及2048個對應位置。一開始,亦即,在開始壓縮(或解壓縮)方法後,不存在儲存於回看表結構400中之值或其他條目。
再次參看圖2,如由區塊214指示,判定是否存在在回看表結構400中之匹配輸入字的所識別位置(亦即,由散列函數識別之LOCATION)處儲存之值。在區塊220之上下文中的術語「匹配」指兩個字中的所有位元之逐位元匹配。此類型匹配亦可被稱作完全匹配。
若判定(區塊214)在輸入字與在回看表結構400中之所識別位置處儲存的值之間存在完全匹配,則針對此資料類型(亦即,完全匹配)產生碼字,如由區塊216所指示。與產生針對完全匹配之輸入字的碼字相關聯,輸入字在輸入串流中之位置(「POSITION」)的指示包括於所產生輸出中。因此,可產生包含針對完全匹配輸入字之資料類型的經產生碼字618以及輸入字在輸入串流中之位置之指示620的輸出串流之一部分616(圖6C)。輸入字在輸入串流中之位置的指示(「POSITION」)亦在所識別位置處插入至回看表結構400中。在區塊216後,方法可返回至區塊202,在區塊202中,處理輸入串流中之下一輸入字。
若判定(區塊214)不存在完全匹配,則進一步判定是否存在部分匹配。如由區塊218所指示,首先藉由將散列函數應用於輸入字之經修改版本而判定位置(「LOCATION」)。可藉由操縱待針對部分匹配測試的輸入字之位元而產生輸入字之經修改版本。舉例而言,在每一輸入字長度為32位元且部分匹配經定義為輸入字之12個上部或最高有效位元(「MSB」)與在回看表結構400中之所識別位置處儲存的值之逐位元匹配的實施例中,可藉由遮蔽掉輸入字之12個MSB及移位20個位元以將12個相關位元置放在最低有效位元(「LSB」)位置中而產生經修改字(「MODIFIED_WORD」)。接著,如由區塊220所指示,輸入字在輸入串流中之位置的指示(「POSITION」)在所識別位置 (「LOCATION」)處插入至回看表結構400內。
如由區塊222所指示,藉由比較輸入字匹配的鄰近或相鄰位元之一部分或子集與在回看表結構400中之所識別位置(「LOCATION」)處儲存的值之對應位元而判定是否存在部分匹配。若判定(區塊222)在輸入字與在回看表結構400中之所識別位置處儲存的值之間存在部分匹配,則針對此資料類型(亦即,部分匹配)產生一碼字,如由區塊224所指示。與產生針對為部分匹配之輸入字的碼字相關聯,輸入字在輸入串流中之位置的指示(「POSITION」)包括於所產生輸出中。輸入字之不匹配部分亦包括於產生之輸出中。因此,可產生輸出串流之一部分622(圖6D),其包含:針對部分匹配輸入字之資料類型的經產生碼字624;輸入字在輸入串流中之位置的指示626;及輸入字之不匹配部分628。舉例而言,在輸入字由32個位元組成且部分匹配經定義為12個MSB之匹配的實施例中,則輸入字之不匹配部分628將由20個最低有效位元(LSB)組成。輸入字在輸入串流中之位置的指示(「POSITION」)亦在所識別位置處插入至回看表結構400內。在區塊224後,方法可返回至區塊202,在區塊202中,處理輸入串流中之下一輸入字。
若分別根據區塊214及區塊222判定輸入字既不完全匹配亦不部分匹配回看表結構400中之任何條目,則經修改字(「MODIFIED_WORD」)被添加至(亦即,儲存在回看表結構400中之所識別位置處)回看表結構400,如由區塊226所指示。如由區塊228所指示,根據例示性實施例中之霍夫曼寫碼方案針對此資料類型(亦即,既不完全匹配亦不部分匹配)產生一碼字。與產生針對既不完全匹配亦不部分匹配的輸入字之碼字相關聯,整個不匹配輸入字自身(其亦可被稱作「原始」輸入字)包括於產生之輸出中。因此,可產生輸出串流之一部分610(圖6B),其包含針對不匹配輸入字之資料類型 的經產生碼字612以及輸入字614之複本或執行個體。在區塊208後,方法可返回至區塊202,在區塊202中處理輸入串流中之下一輸入字。儘管為了清楚起見圖2中未展示,但方法可在輸入串流中之所有輸入字已被處理時終止。輸入串流可表示輸入資料120之一或多個頁面(圖1)。
簡單參看圖5,將輸入串流之一例示性部分502描繪為具有連續輸入字(以十六進位記法)0101、7D10、ADD1、0101、33A5等。(此等輸入字值不具有有效性,亦即,係任意的,且在此實例中僅為達成說明之目的。又,儘管為說明方便起見描繪為16位元字,但此等輸入字可為32個位元。)圖5中亦展示的為具有上文關於回看表結構400(圖4)所描述之相同結構的一例示性回看表500。
因此,舉例而言,例示性回看表500可經組態以儲存2048個值及2048個對應位置。在此實例中,輸入字0101位於輸入串流中之位置0中。因此,在判定(區塊214及區塊222)輸入字0101既不完全匹配亦不部分匹配之情況下,則輸入字0101及其位置0將儲存於例示性回看表500中之藉由將上文提及之散列函數應用於輸入字0101而判定的位置中。同樣在此實例中,在判定(區塊214及區塊222)輸入字7D10既不完全匹配亦不部分匹配之情況下,則輸入字7D10及其位置1將儲存於例示性回看表500中之藉由將上文提及之散列函數應用於輸入字7D10而判定的位置中。
類似地在此實例中,在判定(區塊214及區塊222)輸入字ADD1既不完全匹配亦不部分匹配之情況下,則輸入字ADD1及其位置2將儲存於例示性回看表500中之藉由將上文提及之散列函數應用於輸入字ADD1而判定的位置中。然而,在此實例中,處理在位置3中之輸入字0101的結果為與儲存於例示性回看表500中之由「3」索引的位置中之值之完全匹配。如上文所描述,儲存於回看表結構400中之位置可用 以索引或存取回看表結構400中之對應位置中的值。在此實例中,使用輸入字0101之位置「3」來存取在例示性回看表500中之對應位置處儲存的值揭露儲存在彼位置處之值為0101。比較儲存在彼位置處之值0101與在位置3中之輸入字0101揭露完全匹配。相對於習知壓縮技術,本發明方法及系統以回看位置代替散列索引。
注意,輸入字之位置的指示620或626(圖6C及圖6D)亦可被稱作輸出索引,此係因為其形成所產生輸出串流之部分及其索引或指向儲存於回看表結構400中之值。輸出串流中之輸出索引對應於回看表結構400經組態以儲存的位置。因為儲存於回看表結構400中之每一位置索引或對應於儲存於回看表結構400中之值,因此輸出索引可用以存取儲存於回看表結構400中之對應值。
輸出索引可使用相關輸入字之輸入串流中的位置之以2為底的對數在輸出串流中經濟地表示。因為方法在處理每一輸入字時追蹤其輸入串流中的位置,因此方法無需藉由可表示由輸入串流中之位置表示的量值之二進位數所藉以的最少以上位元來表示輸出索引。舉例而言,3之輸出索引無需由輸出串流中之兩個以上位元表示,此係因為方法在處理超出輸入串流中之位置3的輸入字時不可產生此輸出索引。採用3之以2為底對數得到大致1.5,且將頂值函數應用於彼結果得到2。
因此,可判定輸入串流中之小於3的任何位置可用少至兩個位元表示。同樣,舉例而言,15之輸出索引無需由輸出串流中之四個以上位元表示,此係因為方法在處理超出輸入串流中之位置15的輸入字時不可產生此輸出索引。採用15之以2為底對數得到大致3.9,且將頂值函數應用於彼結果得到4。因此,可判定輸入串流中之小於15的任何位置可用少至四個位元表示。
以回看位置進行之散列索引代替技術可由用於資料壓縮技術中 的任何基於詞典之寫碼採用。例示性基於詞典之寫碼方法包括(但不限於)WKDM、增量編碼及基於Lempel-Ziv之方法,諸如,LZ78、LZW、LZ77、LZMS、LZO、LZS及LZRW,僅舉幾例。以回看位置代替散列索引亦可適用於用於影像之其他壓縮技術,諸如,碎片壓縮。如由一般熟習此項技術者理解,碎片壓縮技術通常將影像劃分成若干子區段且該技術判定子區段是否可相對於彼此複製,影像之第一子區段看起來是否相當類似於影像之第二及第三子區段,等等。
因為以回看位置代替散列索引可消除需要由處理器存取的資料結構之數目,因此此可由於存在較少存取/審閱之資料結構以便解壓縮資料串流而可增大可解壓縮資料串流之速度。本發明方法及系統之另一優點為回看位置(替代散列索引)之詞典與可僅儲存散列索引之詞典相比大小可為無限大。回看位置替代散列索引之詞典的另一優點為,其可減小或消除散列衝突,此係由於散列不再用於詞典中。
藉由本發明方法及系統,包含回看位置之每一回看表條目可具有隨資料串流之長度而變的大小。舉例而言,對於資料串流之第一字,此單一字之回看條目可包含具有零值的指標(大小為單一位元)。對於資料串流之第二字,回看位置條目(或指標)長度可包含一值(大小為單一位元)。對於四千位元組長度資料串流,最後字之回看條目(指標長度)可包含具有十二位元值之指標長度。因此,本發明方法及系統之指標長度逐漸增加使用回看位置(替代散列索引)編碼的資料串流。
如在圖3中說明,上文所描述之方法亦可以下文較高級方式特性化。如由區塊302所指示,對於輸入串流中之連續輸入字,判定輸入字是否完全或部分地匹配回看表條目。如由區塊304所指示,回應於輸入字而更新回看表。如由區塊306所指示,使用熵編碼,針對輸入字經判定為的無論哪個資料類型而產生碼字。儘管在例示性實施例中 熵寫碼方案為霍夫曼寫碼,但在其他實施例中此熵寫碼方案可具有任何其他類型。可存在兩個或兩個以上資料類型,其中之至少一者指示輸入字與回看表條目之間的完全匹配且其中之另一者指示輸入字與回看表條目之間的部分匹配。在上文關於圖2所描述之例示性實施例中,存在四個主資料類型:零延行(且此資料類型之子類型可指示不同長度零延行);完全匹配;部分匹配;及不匹配。如由區塊308所指示,產生輸出串流。輸出串流之每一連續部分包括對應於輸入串流中的連續輸入字中之一者的碼字,且亦可包括額外資訊,諸如,輸出索引、完全字或字之一部分,如上文關於圖6A至圖6D所描述。
鑒於一例示性壓縮方法之前述描述,一般熟習此項技術者將易於瞭解對應的解壓縮方法。經壓縮資料之每一連續部分包括對應於輸入串流中的連續輸入字中之一者的一碼字,且亦可包括與碼字相關聯的輸出索引、完全字或字之一部分。回應於針對零延行之碼字的偵測,解壓縮方法將由碼字指示的零值字之相連數目作為經解壓縮資料輸出。回應於針對不匹配之碼字的偵測,解壓縮方法將存在於與彼碼字相關聯的經壓縮資料中之字作為經解壓縮資料輸出。回應於針對完全匹配之碼字的偵測,解壓縮方法使用存在於與彼碼字相關聯的經壓縮資料中之輸出索引來擷取回看表條目,解壓縮方法接著將回看表條目作為經解壓縮資料輸出。回應於針對部分匹配之碼字的偵測,解壓縮方法使用存在於與彼碼字相關聯的經壓縮資料中之輸出索引以擷取回看表條目,解壓縮方法接著結合存在於與彼碼字相關聯的經壓縮資料中之部分字輸出該回看表條目。舉例而言,在輸入字由32個位元組成之一實施例中,解壓縮方法可將表示10個LSB之部分字附加至自回看表條目擷取的22個MSB以形成經解壓縮輸出。
處理系統100(圖1)可表示任何合適類型之裝置(諸如,圖7中所說明之攜帶型通信裝置700)或包括於其中。攜帶型通信裝置700包括一 晶片上系統702,其包括一中央處理單元(「CPU」)704。類比信號處理器706耦接至CPU 704。CPU 704可經組態以按上文關於上文所描述之壓縮及快取方法所描述的方式而操作。顯示控制器708及觸控螢幕控制器710耦接至CPU 704。在晶片上系統702外部的觸控螢幕顯示器712耦接至顯示控制器708及觸控螢幕控制器710。視訊編碼器714(例如,相交替行(「PAL」)編碼器、順序與存儲彩色電視系統(「SECAM」)編碼器、國家電視系統委員會(「NTSC」)編碼器或任何其他視訊編碼器)耦接至CPU 704。另外,將視訊放大器716耦接至視訊編碼器714以及觸控螢幕顯示器712。視訊埠718耦接至視訊放大器716。USB控制器720耦接至CPU 704。USB埠722耦接至USB控制器720。可以上文關於記憶體104(圖1)所描述之方式操作的記憶體724耦接至CPU 704。用戶識別模組(「SIM」)卡726及數位相機728亦可耦接至CPU 704。在一例示性態樣中,數位相機728為電荷耦合裝置(「CCD」)相機或互補金屬氧化物半導體(「CMOS」)相機。
立體聲音訊編解碼器730可耦接至類比信號處理器706。又,音訊放大器732可耦接至立體聲音訊編解碼器730。在一例示性態樣中,第一立體聲揚聲器734及第二立體聲揚聲器736耦接至音訊放大器732。此外,麥克風放大器738可耦接至立體聲音訊編解碼器730。麥克風740可耦接至麥克風放大器738。在一特定態樣中,頻率調變(「FM」)無線電調諧器742可耦接至立體聲音訊編解碼器730。又,FM天線744耦接至FM無線電調諧器742。另外,立體聲頭戴式耳機746可耦接至立體聲音訊編解碼器730。
射頻(「RF」)收發器748可耦接至類比信號處理器706。RF交換器750可耦接於RF收發器748與RF天線752之間。RF收發器748可經組態以與習知地面通信網路(諸如,行動電話網路)以及與全球定位系統(「GPS」)衛星通信。
具有麥克風之單聲道耳機756可耦接至類比信號處理器706。另外,振動器裝置758可耦接至類比信號處理器706。電源供應器760可耦接至晶片上系統702。在一特定態樣中,電源供應器760為直流電(「DC」)電源供應器,其將電力提供至攜帶型通信裝置700之需要電力的各種組件。另外,在一特定態樣中,電源供應器為可充電DC電池組或DC電源供應器,DC電源供應器源自連接至AC電源之交流電(「AC」)至DC變壓器。
小鍵盤754可耦接至類比信號處理器706。觸控螢幕顯示器712、視訊埠718、USB埠822、相機728、第一立體聲揚聲器734、第二立體聲揚聲器736、麥克風740、FM天線744、立體聲頭戴式耳機746、RF交換器750、RF天線752、小鍵盤754、單聲道耳機756、振動器758及電源供應器760在晶片上系統702之外部。
本文中所描述(諸如,上文關於圖2及圖3所描述)的方法步驟可以電腦程式指令形式儲存於記憶體724中。此等指令可由CPU 704或另一處理器執行,以執行本文中所描述之方法。
在不脫離本發明之精神及範疇的情況下,替代實施例將對一般熟習本發明所屬之此項技術者變得顯而易見。因此,雖然已經詳細說明及描述了選定態樣,但應理解,在不脫離如由接著的申請專利範圍所界定的本發明之精神及範疇之情況下,可在其中進行各種取代及更改。
100‧‧‧處理系統
102‧‧‧處理器
104‧‧‧系統記憶體
106‧‧‧互連件
108‧‧‧資料壓縮邏輯
110‧‧‧輸入邏輯
112‧‧‧熵編碼邏輯
114‧‧‧延行長度邏輯
116‧‧‧回看表邏輯
118‧‧‧輸出邏輯
120‧‧‧輸入資料
122‧‧‧輸出資料

Claims (30)

  1. 一種用於壓縮複數個輸入字之一輸入串流之方法,該方法包含:對於該輸入串流之每一連續輸入字,判定該輸入字是否匹配一回看表中之一條目,該回看表儲存複數個條目;回應於該輸入字而更新該回看表;藉由熵編碼對應於該輸入字之一資料類型而產生一碼字,每一輸入字為複數個資料類型中之一者,該複數個資料類型包括指示該輸入字與該回看表中之一條目之間的完全匹配之至少一第一資料類型及指示該輸入字與該回看表中之一條目之間的部分匹配之一第二資料類型;及產生一輸出串流,該輸出串流包括對應於該輸入串流之該等輸入字定序的碼字。
  2. 如請求項1之方法,其中該複數個資料類型包括複數個第三資料類型,每一第三資料類型指示零之一唯一數目的一延行長度,且複數個延行長度中之每一者經編碼為一不同碼字。
  3. 如請求項1之方法,其中該複數個資料類型包括指示該輸入字與該回看表中之一條目之間的既不完全匹配亦不部分匹配之一第四資料類型。
  4. 如請求項1之方法,其中:在該回看表中更新包含將用於該輸入字之一表索引儲存於該回看表中,該表索引表示該輸入字在該輸入串流中之一位置;及產生一輸出串流包含產生與針對該第一資料類型之一輸入字而產生的每一碼字相關聯之一輸出索引,該輸出索引表示一完 全匹配輸入字在該輸入串流中之一位置。
  5. 如請求項4之方法,其中該輸出索引在經壓縮輸出中由回應於該輸入字在該輸入串流中之一位置的一以2為底之對數判定的位元之一數目表示。
  6. 如請求項1之方法,其中該輸入字與該回看表中之一條目之間的部分匹配包含該輸入字之相鄰位元之一子集與該回看表中的該條目之相鄰位元之一經對應定位子集的逐位元匹配。
  7. 如請求項1之方法,其中:更新該回看表包含將用於該輸入字之一表索引儲存於該回看表中,該表索引表示該輸入字在該輸入串流中之一位置;及產生一輸出串流包含產生與針對該第二資料類型之一輸入字而產生的每一碼字相關聯之一不匹配字部分及產生與針對該第二資料類型之一輸入字而產生的每一碼字相關聯之一輸出索引,該輸出索引表示一部分匹配輸入字在該輸入串流中之一位置。
  8. 如請求項7之方法,其中該輸出索引係在該經壓縮輸出中由回應於該輸入字在該輸入串流中之一位置的一以2為底之對數判定的位元之一數目表示。
  9. 如請求項1之方法,其中該熵編碼包含以下中之至少一者:一遞增編碼方案,其使用尾碼或首碼與其碼字一起來建置其詞典;一基於文字之耗損較少寫碼方案;WKDM編碼;WinRAR編碼;7-Zip編碼;用於一攜帶型文件格式(PDF)影像壓縮技術中之一影像壓縮編碼方案;一有損影像壓縮編碼方案;一聯合照相專家小組(JPEG)影像壓縮技術;一耗損較少影像壓縮技術;及一攜帶型網路圖形(PNG)影像壓縮技術。
  10. 如請求項1之方法,其中該熵編碼包含一基於詞典之寫碼方法, 該方法包括以下中的至少一者:WKDM編碼;遞增編碼;基於Lempel-Ziv之編碼;LZ78;LZW;LZ77;LZMS;LZO;LZS;LZRW;及一碎片影像壓縮技術。
  11. 一種用於壓縮複數個輸入字之一輸入串流之系統,其包含:一記憶體;及一處理器,其經組態以執行包含自該記憶體讀取該輸入串流之連續輸入字並針對每一連續輸入字執行以下操作的一方法:判定該輸入字是否匹配一回看表中之一條目,該回看表儲存複數個條目;回應於該輸入字而更新該回看表;藉由熵編碼對應於該輸入字之一資料類型而產生一碼字,每一輸入字為複數個資料類型中之一者,該複數個資料類型包括指示該輸入字與該回看表中之一條目之間的完全匹配之至少一第一資料類型及指示該輸入字與該回看表中之一條目之間的部分匹配之一第二資料類型;及產生一輸出串流,該輸出串流包括對應於該輸入串流之該等輸入字定序的碼字。
  12. 如請求項11之系統,其中該複數個資料類型包括複數個第三資料類型,每一第三資料類型指示零之一唯一數目的一延行長度,且複數個延行長度中之每一者經編碼為一不同碼字。
  13. 如請求項11之系統,其中該複數個資料類型包括指示該輸入字與該回看表中之一條目之間既不完全匹配亦不部分匹配的一第四資料類型。
  14. 如請求項11之系統,其中:更新該回看表包含將用於該輸入字之一表索引儲存於該回看表中,該表索引表示該輸入字在該輸入串流中之一位置;及 產生一輸出串流包含產生與針對該第一資料類型之一輸入字而產生的每一碼字相關聯之一輸出索引,該輸出索引表示一完全匹配輸入字在該輸入串流中之一位置。
  15. 如請求項14之系統,其中該輸出索引在經壓縮輸出中由回應於該輸入字在該輸入串流中之一位置的一以2為底之對數判定的位元之一數目表示。
  16. 如請求項11之系統,其中該輸入字與該回看表中之一條目之間的部分匹配包含該輸入字之相鄰位元之一子集與該回看表中的該條目之相鄰位元之一經對應定位子集的逐位元匹配。
  17. 如請求項11之系統,其中:更新該回看表包含將用於該輸入字之一表索引儲存於該回看表中,該表索引表示該輸入字在該輸入串流中之一位置;及產生一輸出串流包含產生與針對該第二資料類型之一輸入字而產生的每一碼字相關聯之一不匹配字部分及產生與針對該第二資料類型之一輸入字而產生的每一碼字相關聯之一輸出索引,該輸出索引表示一部分匹配輸入字在該輸入串流中之一位置。
  18. 如請求項17之系統,其中該輸出索引在該經壓縮輸出中由回應於該輸入字在該輸入串流中之一位置的一以2為底之對數判定的位元之一數目表示。
  19. 如請求項11之系統,其中該熵編碼包含以下中之至少一者:一遞增編碼方案,其使用尾碼或首碼與其碼字一起來建置其詞典;一基於文字之耗損較少寫碼方案;WKDM編碼;WinRAR編碼;7-Zip編碼;用於一攜帶型文件格式(PDF)影像壓縮技術中之一影像壓縮編碼方案;一有損影像壓縮編碼方案;一聯合照相專家小組(JPEG)影像壓縮技術;一耗損較少影像壓縮技術;及一攜帶 型網路圖形(PNG)影像壓縮技術。
  20. 如請求項11之系統,其中該熵編碼包含一基於詞典之寫碼方法,其包括以下中的至少一者:WKDM編碼;遞增編碼;基於Lempel-Ziv之編碼;LZ78;LZW;LZ77;LZMS;LZO;LZS;LZRW;及一碎片影像壓縮技術。
  21. 一種用於壓縮複數個輸入字之一輸入串流之電腦程式產品,該電腦程式產品包含在其上儲存有電腦可執行邏輯之一非暫時性電腦可讀媒體,該電腦可執行邏輯包含:輸入邏輯,其經組態以對於該輸入串流之每一連續輸入字,判定該輸入字是否匹配一回看表中之一條目,該回看表儲存複數個條目;回看表邏輯,其經組態以回應於該輸入字而更新該回看表;熵編碼邏輯,其經組態以藉由熵編碼對應於該輸入字之一資料類型而產生一碼字,每一輸入字為複數個資料類型中之一者,該複數個資料類型包括指示在該輸入字與該回看表中之一條目之間的完全匹配之至少一第一資料類型及指示在該輸入字與該回看表中之一條目之間的部分匹配之一第二資料類型;及輸出邏輯,其經組態以產生一輸出串流,該輸出串流包括對應於該輸入串流之該等輸入字定序的碼字。
  22. 如請求項21之電腦程式產品,其中該複數個資料類型包括複數個第三資料類型,每一第三資料類型指示零之一唯一數目的一延行長度,且複數個延行長度中之每一者經編碼為一不同碼字。
  23. 如請求項21之電腦程式產品,其中:該回看表邏輯經組態以將用於該輸入字之一表索引儲存於該回看表中,該表索引表示該輸入字在該輸入串流中之一位置; 及該輸出邏輯經組態以產生與針對該第一資料類型之一輸入字而產生的每一碼字相關聯之一輸出索引,該輸出索引表示一完全匹配輸入字在該輸入串流中之一位置。
  24. 如請求項23之電腦程式產品,其中該輸出索引在壓縮輸出中由回應於該輸入字在該輸入串流中之一位置的一以2為底之對數判定的位元之一數目表示。
  25. 如請求項21之電腦程式產品,其中該輸入字與該回看表中之一條目之間的部分匹配包含該輸入字之相鄰位元之一子集與該回看表中的該條目之相鄰位元之一經對應定位子集的逐位元匹配。
  26. 如請求項21之電腦程式產品,其中:更新該回看表包含將用於該輸入字之一表索引儲存於該回看表中,該表索引表示該輸入字在該輸入串流中之一位置;及該輸出邏輯經組態以產生與針對該第二資料類型之一輸入字而產生之每一碼字相關聯之一不匹配字部分及產生與針對該第二資料類型之一輸入字而產生之每一碼字相關聯之一輸出索引,該輸出索引表示一部分匹配輸入字在該輸入串流中之一位置。
  27. 如請求項21之電腦程式產品,其中該熵編碼包含以下中之至少一者:一遞增編碼方案,其使用尾碼或首碼與其碼字一起來建置其詞典;一基於文字之耗損較少寫碼方案;WKDM編碼;WinRAR編碼;7-Zip編碼;用於一攜帶型文件格式(PDF)影像壓縮技術中之一影像壓縮編碼方案;一有損影像壓縮編碼方案;一聯合照相專家小組(JPEG)影像壓縮技術;一耗損較少影像壓縮技術;及一攜帶型網路圖形(PNG)影像壓縮技術。
  28. 如請求項21之電腦程式產品,其中該熵編碼包含一基於詞典之寫碼方法,其包括以下中的至少一者:WKDM編碼;遞增編碼;基於Lempel-Ziv之編碼;LZ78;LZW;LZ77;LZMS;LZO;LZS;LZRW;及一碎片影像壓縮技術。
  29. 一種用於壓縮複數個輸入字之一輸入串流的系統,該系統包含:用於對於該輸入串流之每一連續輸入字判定該輸入字是否匹配一回看表中之一條目之構件,該回看表儲存複數個條目;用於回應於該輸入字而更新該回看表之構件;用於藉由熵編碼對應於該輸入字之一資料類型而產生一碼字之構件,每一輸入字為複數個資料類型中之一者,該複數個資料類型包括指示該輸入字與該回看表中之一條目之間的完全匹配之至少一第一資料類型及指示該輸入字與該回看表中之一條目之間的部分匹配之一第二資料類型;及用於產生一輸出串流之構件,該輸出串流包括對應於該輸入串流之該等輸入字定序的碼字。
  30. 如請求項29之系統,其中該熵編碼包含以下中之至少一者:一遞增編碼方案,其使用尾碼或首碼與其碼字一起來建置其詞典;一基於文字之耗損較少寫碼方案;WKDM編碼;WinRAR編碼;7-Zip編碼;用於一攜帶型文件格式(PDF)影像壓縮技術中之一影像壓縮編碼方案;一有損影像壓縮編碼方案;一聯合照相專家小組(JPEG)影像壓縮技術;一耗損較少影像壓縮技術;及一攜帶型網路圖形(PNG)影像壓縮技術。
TW105114494A 2015-05-11 2016-05-10 於虛擬記憶體系統中之經改善壓縮快取 TW201707388A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562159871P 2015-05-11 2015-05-11
US201562192136P 2015-07-14 2015-07-14
US14/832,739 US9344114B1 (en) 2015-05-11 2015-08-21 Compressed caching in a virtual memory system

Publications (1)

Publication Number Publication Date
TW201707388A true TW201707388A (zh) 2017-02-16

Family

ID=55807639

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105114494A TW201707388A (zh) 2015-05-11 2016-05-10 於虛擬記憶體系統中之經改善壓縮快取

Country Status (7)

Country Link
US (2) US9331712B1 (zh)
EP (1) EP3295568B1 (zh)
JP (1) JP2018521537A (zh)
KR (1) KR20180005663A (zh)
CN (1) CN107925421A (zh)
TW (1) TW201707388A (zh)
WO (2) WO2016182685A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10303383B1 (en) * 2015-12-09 2019-05-28 Travelport, Lp System and method for implementing non-blocking, concurrent hash tables
US10509580B2 (en) * 2016-04-01 2019-12-17 Intel Corporation Memory controller and methods for memory compression utilizing a hardware compression engine and a dictionary to indicate a zero value, full match, partial match, or no match
US10303402B2 (en) 2016-08-02 2019-05-28 Seagate Technology Llc Data compression using partial statistics
CN107967296B (zh) * 2017-10-31 2020-06-09 西安空间无线电技术研究所 一种快速低资源开销的改进lzo压缩方法
US10687062B1 (en) 2019-02-22 2020-06-16 Google Llc Compression across multiple images

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4626829A (en) * 1985-08-19 1986-12-02 Intelligent Storage Inc. Data compression using run length encoding and statistical encoding
US5300931A (en) * 1987-09-04 1994-04-05 Unisys Corporation Memory based vector quantization
US5247357A (en) * 1989-05-31 1993-09-21 Scientific Atlanta, Inc. Image compression method and apparatus employing distortion adaptive tree search vector quantization with avoidance of transmission of redundant image data
US5255090A (en) * 1991-11-19 1993-10-19 Scientific-Atlanta, Inc. Progressive transmission of vector quantized data
US5231485A (en) * 1991-11-19 1993-07-27 Scientific-Atlanta, Inc. Method and apparatus for transforming between fixed-rate vector quantized data and variable rate vector quantized data
US5703581A (en) * 1996-06-14 1997-12-30 Lucent Technologies Inc. Method and apparatus for data compression and decompression
US5973626A (en) 1998-03-17 1999-10-26 Cornell Research Foundation, Inc. Byte-based prefix encoding
JP3778087B2 (ja) 2002-01-18 2006-05-24 富士ゼロックス株式会社 データ符号化装置及びデータ復号装置
US7079056B2 (en) 2003-01-15 2006-07-18 Delphi Technologies, Inc. Method of encoding and storing in a machine control computer a compressed data lookup table
DE10301362B4 (de) 2003-01-16 2005-06-09 GEMAC-Gesellschaft für Mikroelektronikanwendung Chemnitz mbH Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche
AU2003250845A1 (en) 2003-06-24 2005-01-21 Telecom Italia S.P.A. A method and system for decoding variable length encoded signals, computer program product therefor
US7129864B2 (en) 2004-12-31 2006-10-31 Intel Corporation Fast compact decoder for huffman codes
US7519470B2 (en) * 2006-03-15 2009-04-14 Microsoft Corporation Location-based caching for mobile devices
CN101622877A (zh) * 2006-12-22 2010-01-06 高通股份有限公司 用于有效空间帧内可预测性确定(或评估)的系统和方法
US7825835B2 (en) 2008-12-15 2010-11-02 Nvidia Corporation Method and system for encoded video compression
US8341501B2 (en) * 2009-04-30 2012-12-25 International Business Machines Corporation Adaptive endurance coding of non-volatile memories
US20110206132A1 (en) 2010-02-19 2011-08-25 Lazar Bivolarsky Data Compression for Video
US8400335B2 (en) 2011-07-21 2013-03-19 International Business Machines Corporation Using variable length code tables to compress an input data stream to a compressed output data stream
US8248467B1 (en) 2011-07-26 2012-08-21 ByteLight, Inc. Light positioning system using digital pulse recognition
US8643515B2 (en) 2011-10-28 2014-02-04 International Business Machines Corporation Compressing data using an encoding table
US8692696B2 (en) 2012-01-03 2014-04-08 International Business Machines Corporation Generating a code alphabet of symbols to generate codewords for words used with a program
US9330001B2 (en) * 2012-05-21 2016-05-03 Zeropoint Technologies Ab Cache system and a method of operating a cache memory

Also Published As

Publication number Publication date
US9344114B1 (en) 2016-05-17
CN107925421A (zh) 2018-04-17
EP3295568B1 (en) 2018-12-05
WO2016182686A1 (en) 2016-11-17
US9331712B1 (en) 2016-05-03
EP3295568A1 (en) 2018-03-21
KR20180005663A (ko) 2018-01-16
JP2018521537A (ja) 2018-08-02
WO2016182685A1 (en) 2016-11-17

Similar Documents

Publication Publication Date Title
TW201707388A (zh) 於虛擬記憶體系統中之經改善壓縮快取
US5870036A (en) Adaptive multiple dictionary data compression
US10044370B1 (en) Lossless binary compression in a memory constrained environment
CN109075798B (zh) 可变大小符号基于熵的数据压缩
US10187081B1 (en) Dictionary preload for data compression
US9742437B2 (en) Method for lossless data compression/decompression and device thereof
US20180143770A1 (en) Methods, devices and systems for data compression and decompression
AU2016200550A1 (en) Encoding program, decompression program, compression method, decompression method, compression device and decompression device
US20120150877A1 (en) Efficient database compression
US10757227B2 (en) Security-oriented compression
CN111008230A (zh) 数据存储方法、装置、计算机设备及存储介质
US8402282B2 (en) Method and device for encrypting and decrypting digital data
Funasaka et al. Adaptive loss‐less data compression method optimized for GPU decompression
US10103747B1 (en) Lossless binary compression in a memory constrained environment
US20210159913A1 (en) Multiple Symbol Decoder
WO2016085393A1 (en) Improved compression and encryption of a file
US20160226516A1 (en) Non-transitory computer-readable recording medium, compression method, decompression method, compression device, and decompression device
CN112449191A (zh) 压缩多个图像的方法、解压缩图像的方法和装置
CN115765754A (zh) 一种数据编码方法及一种编码数据比较方法
US20240028510A1 (en) Systems, methods and devices for exploiting value similarity in computer memories
JP2016052046A (ja) 圧縮装置、伸長装置およびストレージ装置
US20220350576A1 (en) Compression Of Firmware Updates
US9054730B2 (en) Method and system for LZW based decompression
JP2016134808A (ja) データ圧縮プログラム、データ復元プログラム、データ圧縮装置、及びデータ復元装置
Akil et al. FPGA-based architecture for hardware compression/decompression of wide format images