欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于解碼的并行霍夫曼數(shù)據(jù)解碼器、設計結構和方法

文檔序號:10660419閱讀:550來源:國知局
用于解碼的并行霍夫曼數(shù)據(jù)解碼器、設計結構和方法
【專利摘要】在保持寄存器中保持主數(shù)據(jù)輸入和超前輸入。向多個即M個半解碼器提供所述主數(shù)據(jù)輸入和所述超前輸入的連續(xù)的重疊部分,所述半解碼器包括霍夫曼碼的頻繁出現(xiàn)的碼字的子集。當沒有遇到在所述半解碼器中不可獲取的碼字時,所述半解碼器并行地在單個時鐘周期中將所述頻繁出現(xiàn)的碼字中的M個解碼。當遇到在所述半解碼器中不可獲取的碼字時,將意圖用于所述半解碼器中的對應的一個的輸入施加到以三態(tài)內容可尋址存儲器實現(xiàn)的全解碼器的輸入,該意圖用于所述半解碼器中的對應的一個的輸入包括在所述半解碼器中的所述對應的一個中不可獲取的所述碼字。所述全解碼器包括所述霍夫曼碼的全部碼字。
【專利說明】
用于解碼的并行霍夫曼數(shù)據(jù)解碼器、設計結構和方法
技術領域
[0001] 本發(fā)明涉及電氣、電子和計算機領域,并且更具體地涉及系統(tǒng)架構等。
【背景技術】
[0002] 霍夫曼碼是使用由David A.Huffman開發(fā)的算法發(fā)現(xiàn)的最優(yōu)前綴碼。更常見的符 號通常使用比更不常見的符號更少的比特表示。DEFLATE是使用LZ77算法和霍夫曼編碼的 組合的數(shù)據(jù)壓縮算法,并且在RFC 1951中規(guī)定。在DEFLATE RFC 1951中定義一個示例霍夫 曼解碼器。

【發(fā)明內容】

[0003] 本發(fā)明的原理提供用于并行霍夫曼解碼器的技術。在一個方面中,用于將根據(jù)霍 夫曼碼編碼的數(shù)據(jù)解碼的并行霍夫曼數(shù)據(jù)解碼器包括:保持寄存器,其具有保持主數(shù)據(jù)輸 入的主部分、保持超前輸入的超前部分、以及多個輸出;以及多個即Μ個半解碼器,每一個半 解碼器具有輸入和輸出,所述輸入耦接到所述保持寄存器的所述多個輸出中的對應的一 個。所述輸入各自從所述保持寄存器的所述輸出獲得所述保持寄存器的所述主部分和所述 超前部分中的數(shù)據(jù)的連續(xù)的重疊部分。還包括以三態(tài)內容可尋址存儲器實現(xiàn)的全解碼器。 所述全解碼器具有輸入和輸出,所述輸入可選擇性地連接以獲得數(shù)據(jù)的所述重疊部分中的 給定一個。進一步的元件包括解碼器選擇和排序單元,其具有多個輸入、選擇輸出和多個輸 出通道(lane),所述多個輸入耦接到所述半解碼器的所述輸出和所述全解碼器的所述輸 出,所述選擇輸出控制所述全解碼器輸入的選擇性連接。所述全解碼器包括所述霍夫曼碼 的全部碼字;所述半解碼器包括所述霍夫曼碼的頻繁出現(xiàn)的碼字的子集;以及當沒有遇到 在所述半解碼器中不可獲取的碼字時,所述半解碼器并行地在單個時鐘周期中將所述頻繁 出現(xiàn)的碼字中的Μ個解碼。當遇到在所述半解碼器中不可獲取的碼字時,所述解碼器選擇和 排序單元使得意圖用于所述半解碼器中的對應的一個的輸入被施加到所述全解碼器的所 述輸入,該意圖用于所述半解碼器中的對應的一個的輸入包括在所述半解碼器中的所述對 應的一個中不可獲取的所述碼字。
[0004] 在另一方面中,一種設計結構被有形地實施在非臨時性機器可讀介質中,所述設 計結構用于設計、制造或測試集成電路,并且所述設計結構包括如剛才所述的并行霍夫曼 數(shù)據(jù)解碼器。
[0005] 在再一方面中,一種用于并行地將根據(jù)霍夫曼碼編碼的數(shù)據(jù)解碼的示例方法包括 在保持寄存器中保持主數(shù)據(jù)輸入和超前輸入;并且向多個即Μ個半解碼器提供所述主數(shù)據(jù) 輸入和所述超前輸入的連續(xù)的重疊部分。所述半解碼器包括所述霍夫曼碼的頻繁出現(xiàn)的碼 字的子集。當沒有遇到在所述半解碼器中不可獲取的碼字時,進一步的步驟包括并行地在 單個時鐘周期中將所述頻繁出現(xiàn)的碼字中的Μ個解碼。當遇到在所述半解碼器中不可獲取 的碼字時,進一步的步驟包括將意圖用于所述半解碼器中的對應的一個的輸入施加到以三 態(tài)內容可尋址存儲器實現(xiàn)的全解碼器的輸入,該意圖用于所述半解碼器中的對應的一個的 輸入包括在所述半解碼器中的所述對應的一個中不可獲取的所述碼字,所述全解碼器包括 所述霍夫曼碼的全部碼字。
[0006] 如這里使用的,"促成"動作包括執(zhí)行所述動作、使得所述動作更容易、幫助進行所 述動作、或使得所述動作被執(zhí)行。因此,通過示例而非限制的方式,通過發(fā)送適當?shù)臄?shù)據(jù)或 命令以使得或幫助執(zhí)行由在遠程處理器上執(zhí)行的指令進行的動作,在一個處理器上執(zhí)行的 指令可以促成所述動作。為了避免疑惑,在動作器通過除了執(zhí)行動作之外促成所述動作時, 所述動作仍然由某一實體或實體的組合執(zhí)行。
[0007] 可以使用計算機程序產品來實現(xiàn)多個設計結構方面,所述計算機程序產品包括具 有計算機可用程序代碼的計算機可讀存儲介質。此外,可以經(jīng)由包括存儲器和耦接到所述 存儲器并且可操作以實現(xiàn)設計結構或設計過程的至少一個處理器的系統(tǒng)(或裝置)來實現(xiàn) 所述設計結構或過程。
[0008] 本發(fā)明的技術可以提供大量有益技術效果;例如,通過使用半解碼器而非全解碼 器,比先前的技術需要更少的硬件資源和/或更少的芯片面積。注意,如這里所使用的,"半 解碼器"不一定精確地是全解碼器的大小的1/2。
[0009] 根據(jù)結合附圖閱讀的對本發(fā)明的示例性實施例的下列詳細描述,本發(fā)明的這些和 其他特征和優(yōu)點將變得清楚。
【附圖說明】
[0010] 圖1示出從現(xiàn)有技術中已知的霍夫曼編碼的多個方面;
[0011] 圖2示出根據(jù)本發(fā)明的一方面的示例性的基于三態(tài)內容可尋址存儲器(TCAM)的解 碼器;
[0012] 圖3示出根據(jù)本發(fā)明的一方面的并行霍夫曼解碼器的實施例;
[0013] 圖4示出根據(jù)本發(fā)明的一方面的并行霍夫曼解碼器的進一步的多個方面;
[0014] 圖5和6不出根據(jù)本發(fā)明的多個方面的符號分布;
[0015] 圖7示出根據(jù)本發(fā)明的一方面的用于處置不由半解碼器處理的碼字的技術;
[0016] 圖8示出本發(fā)明的進一步的半解碼器方面;
[0017]圖9示出根據(jù)本發(fā)明的一方面的示例執(zhí)行數(shù)據(jù);以及
[0018] 圖10是在半導體設計、制造和/或測試中使用的設計過程的流程圖。
【具體實施方式】
[0019] 如所述,霍夫曼碼是使用由David A.Huffman開發(fā)的算法發(fā)現(xiàn)的最優(yōu)前綴碼。更常 見的符號通常使用比更不常見的符號更少的比特表示。DEFLATE是使用LZ77算法和霍夫曼 編碼的組合的數(shù)據(jù)壓縮算法,并且在RFC 1951中規(guī)定。在DEFLATE RFC 1951中定義一個示 例霍夫曼解碼器。
[0020] 此外,在該方面中,數(shù)據(jù)被編碼成塊,如下:
[0021] 〈塊 >〈塊 >〈塊 >···
[0022]例如,在每一個塊中可以存在3比特的首標(header)。如果給定的塊是塊的序列中 的最后的塊,則第1比特可以具有值1,否則(即,在預計更多的塊的情況下)具有值0。第2和 第3比特對于原始的塊可以使得值00存儲在塊中,對于固定的霍夫曼表(事先商定的)可以 使得值01存儲在塊中,對于動態(tài)霍夫曼表可以使得值10被存儲在塊中。
[0023]通過重復串消除(LZ編碼)和使用加權的符號樹(霍夫曼編碼)來實現(xiàn)壓縮。關于重 復串消除,考慮以下:
[0025]如由箭頭指示的,重復的串由返回所述串的第一次出現(xiàn)的指針替代。保留所述串 的第一個副本。這里,由返回"S"的第一次出現(xiàn)的指針替代"S"的隨后的出現(xiàn),并且由返回 "P"的第一次出現(xiàn)的指針替代"P"的隨后的出現(xiàn)。指針將包括諸如"回溯1〇〇個字符并且復制 10個字節(jié)"的信息。指針比原始數(shù)據(jù)更小,并且因此可以實現(xiàn)壓縮。對文件進行"拉鏈壓縮 (zipping)"是非限制性示例。這是第一階段;在第二階段執(zhí)行霍夫曼編碼。
[0026] 編碼的串具有從3到258字節(jié)的長度和從1到32768字節(jié)的距離(滑動窗口)。
[0027] 現(xiàn)在參考圖1,霍夫曼編碼使用更少的比特來編碼更常見的符號。碼的比特序列長 度與符號頻率成反比。例如,可以如下編碼符號A、B、P和Q:
[0028] 符號:碼=A:0,B:10,P:110,Q:111。
[0029] 霍夫曼編碼是無前綴的;即,沒有碼的比特序列是另一個碼的比特序列的前綴。因 此,B:10-C:101是不可能的。
[0030]此外,關于無前綴屬性,當編碼的比特被級聯(lián)時,關于一個符號何時開始和結束不 存在模糊性。因此,不需要分開符號的記號。序列PABQ可以因此被編碼為110010111。然而, 這使得并行解碼器的構造變得復雜,因為它是比特串行處理。
[0031]此外,關于DEFLATE,霍夫曼編碼器將符號編碼為碼。288個符號將文字和指針長度 編碼,如下:
[0032] #0-255:文字(例如原始ASCII將在這里)
[0033] #256:deflate塊的結束(終結符號)
[0034] #257-285:3-258字節(jié)的匹配長度+額外的比特(不是文字,而是將跟隨在該碼字 之后的指針的串(匹配)長度)。
[0035] 下列表示出串匹配長度:
[0038]注意,符號首先被"霍夫曼化",并且隨后附加額外的比特以將匹配長(match len) (長度)編碼。
[0039] 關于距離,對于指針編碼,〈匹配長度〉之后總是跟隨有〈距離〉。存在32個距離編 碼,如下:
[0041 ]圖2示出示例性的基于TCAM的解碼器??梢允褂萌魏晤愋偷腡CAM實現(xiàn)一個或多個 實施例。輸入是比特序列110010111,其前三個符號是PAB。這被用作查詢內容可尋址存儲器 (CAM)的關鍵字。CAM條目有具有0、1或"不關心"(X)的值的"三態(tài)數(shù)字"。CAM中的第一個"命 中(hit)"針對對應于符號P、具有3比特長度的110XXX。所述輸入隨后向左移位3比特,并且 下一個"命中"針對對應于符號A、具有1比特長度的0ΧΧΧΧΧ。所述輸入隨后向左移位1比特, 并且下一個"命中"針對對應于符號B、具有2比特長度的10XXXX。
[0042]現(xiàn)在考慮CAM數(shù)組(array)寬度。注意,"比特"具有0或1的值,而在該上下文中的 (三態(tài))"數(shù)字"可以具有〇、1或不關心(X)的值。DEFLATE最大比特序列長度是15比特??梢云?望的是使用數(shù)字〇(表示這是"MatchLen"(匹配長度)碼)或1(表示這是距離碼)作為每一個 CAM字的前綴一也就是說,文字/長(Len)和距離表二者是否都被存儲在相同的TCAM中。因 此,不包括任何錯誤校正碼(ECC)在內,TCAM部分應該是至少16個數(shù)字寬。
[0043] 現(xiàn)在考慮CAM和RAM數(shù)組長度。具有288個文字/長度符號和32個距離符號,288+32 = 320個條目,意味著512個TCAM條目(向上舍入到2的下一次冪)。注意,向上舍入是可選的; 大多數(shù)技術是以2的冪來確定大小,然而,這不是要求的,并且技術人員將理解分數(shù)大小 (fractional sizing)是可用的,不一定需要向上舍入。
[0044]現(xiàn)在,關于RAM數(shù)組寬度,在一個或多個非限制實施例中,如果在RAM中存儲符號和 碼比特長度,假設9比特用于288個文字/長(len)符號("長(len)"在這里用作"長度"的簡略 表達方法),假設5比特用于距離符號,并且RAM字將包含文字/長或距離-ma X(9,5) =9比 特。使用1比特前綴來將文字/長與距離符號區(qū)分開,因此,10比特將足以識別文字/長和距 離符號。輸入移位值也可以被存儲在RAM中。在該方面中,CAM字(霍夫曼碼)的最大比特長度 = 15,而額外的13比特被用于距離碼;因此,15+13 = 28比特。這意味著輸入可以被移位28個 位置或更少l〇g2(28) = 5比特(向上舍入到最近的整數(shù))以存儲在RAM條目中。因此,不包括 ECC在內,總共是10+5 = 15比特用于RAM。在一些實例中,可能需要額外的RAM比特;例如,用 于控制解碼器狀態(tài)機等。
[0045] 如果符號和碼比特長度被存儲在分開的SRAM中,則僅需要存儲分開的SRAM的地 址,意味著不包括ECC在內,log2(512) = 9比特是TCAM的RAM部分。
[0046] 現(xiàn)在考慮將諸如以下比特序列的比特序列解碼的問題:
[0047] 110010101011001100100100100101001111
[0048] 由于可變長度編碼(VLC),不容易識別數(shù)據(jù)邊界。簡單的串行解碼器從左到右一次 解碼1比特,這太慢。一個或多個實施例有利地在單個周期中解碼例如多達128比特的串。
[0049] 現(xiàn)在將參考圖3。數(shù)據(jù)399是包含在霍夫曼編碼的符號中的比特的流,所述霍夫曼 編碼的符號具有可變長度(比方說,1-15比特,或當包括某些額外的比特時可能28比特)。因 為所述碼是可變長度,事先不知道邊界在哪里。不知道一個符號在哪里停止和另一個符號 在哪里開始;確定這些邊界是解碼過程的一部分。因為所述符號是可變長度,并且因為所述 符號一個時鐘周期接一個時鐘周期地進入,符號可能跨越時鐘邊界。符號可以在一個"字" 中開始,并且在另一個"字"中結束,其中所述字僅是每一個時鐘周期提取的數(shù)據(jù)的樣本。在 非限制性示例中,如果提取數(shù)據(jù)399的128比特寬的樣本(即M=128),并且假設(純粹用于示 例性目的,因為符號事實上具有可變長度)每一個編碼的符號是10比特寬,整數(shù)數(shù)目的10比 特的符號將不適合于128比特的數(shù)據(jù)片段(slice);將會存在12個10比特的符號和下一符號 的8比特;該符號的剩余的2比特將在下一時鐘周期的輸入中到達。這在一個或多個實施例 中經(jīng)由超前抽頭(tap)389來處理。具體地,假設最大碼大小N是28比特。在最壞的情況下,符 號可以在Μ(例如128)比特的最后的比特開始,并且繼續(xù)N-1(例如27)比特進入下一時鐘周 期。因此,采用N-l = 27比特的超前抽頭。因此在Μ(例如128)比特寬的塊(chunk)中采樣輸入 數(shù)據(jù)399,其中比特被編號為0到M-1 (例如0到127),并且抽取(tap)被編號為0到N-2(例如,0 到26)的N-1超前比特。
[0050] 數(shù)據(jù)399的Μ(例如128)比特寬的樣本被饋送到超前寄存器397,其保持所述樣本一 個時鐘周期,使得當所述樣本到達保持寄存器395時,它將與未在超前寄存器397中被延遲 的、來自抽頭389的超前數(shù)據(jù)是同時的。被編號為391的包括數(shù)據(jù)399的Μ(例如128)比特寬的 樣本的保持寄存器395中的數(shù)據(jù)以及被編號為393的來自超前抽頭389的數(shù)據(jù)被饋送到半解 碼器302、304、306、……308。在保持寄存器395中,被編號為391的數(shù)據(jù)399的Μ(例如128)比 特寬的樣本中的比特被編號為〇到Μ-1 (例如0到127),而被編號為393的來自超前抽頭389的 數(shù)據(jù)中的比特被編號為Μ到Μ+Ν-1 (例如128到155)。
[0051 ] 半解碼器302、304、306、……308包含最常見的碼字(在全部解碼器上被復制的內 容)。全解碼器310包含全部碼字。第一半解碼器302被接線到保持寄存器395的比特0到Ν-1 (例如27),并且下一半解碼器304被接線到保持寄存器395的比特1到Ν(例如28),依此類推。 在常見情況下,全部半解碼器同時解碼它們的輸入片段。每一個片段是Ν(例如28)比特長, 與左邊的片段重疊1比特。在非限制性示例中,存在128個半解碼器。解碼是推測性的,因為 事先不知道碼邊界。
[0052] SRAM與TCAM相比更便宜、更小并且使用更少的電力,因此使得使用基于SRAM的半 解碼器是有利的。給予這里的教導,技術人員將能夠以例如SRAM或動態(tài)隨機存取存儲器 (DRAM)實現(xiàn)半解碼器,并且以TCAM實現(xiàn)全解碼器。
[0053]現(xiàn)在將參考圖9。半解碼器將存儲第一級數(shù)據(jù)(常發(fā)現(xiàn)的碼)。根據(jù)本發(fā)明的實施 例,較少發(fā)現(xiàn)的碼將僅被包括在將被存儲在全解碼器中的第二級數(shù)據(jù)中。圖9的表示出了碼 將不會在第一級中被發(fā)現(xiàn)的頻率。例如,對于inp_alice29_txt.gz基準(benchmark),98% 的時間,對于(9,6)表的情況,碼將在第一級長度碼查找中被發(fā)現(xiàn),而僅2%的時間依賴于必 要的第二級查找。圖9示出用于三個不同基準的兩個不同示例。在(9,6)表的示例中,第一級 表是具有2 9個文字/長度的條目和26個距離的條目的SRAM,而在(10,7)表的示例中,第一級 表是具有2 1()個文字/長度的條目和27個距離的條目的SRAM。在(10,7)表的示例中,在第二 列、第二行中的值397意味著平均來說,輸入的每397字節(jié),解碼器需要查閱第二級文字/長 度表。注意,":1即_&1;[0629_111:.82"是當壓縮文本時常用的基準,并且指示的其他.82文件 也是已知的基準。
[0054]如圖4中所見,如果諸如306的半解碼器不能完成它的工作(錯誤解碼,因為在關于 圖9剛才討論的示例中,其是在第一等級中沒有發(fā)現(xiàn)的2%的碼中的一個),則它的輸入片段 被復用到全解碼器(見時間T1的"未命中")。右邊的剩余的半解碼器輸出(這里308)被聲明 為無效,因為它們的開始比特位置取決于不完整的解碼器輸出。全解碼器在下一周期中將 被錯誤解碼的輸入片段解碼。
[0055] 注意,僅單個輸入被示出為到復用器312,但事實上,包括超前比特的保持寄存器 的整個輸出寬度可用于復用器312,并且基于來自選擇單元314的選擇信號選擇適當?shù)谋忍?(對應于未命中的半解碼器),并且將所述適當?shù)谋忍芈酚傻饺獯a器310。在圖4的底部,在 時間T0處,指示的半解碼器成功("命中卩,碼被發(fā)現(xiàn)并且輸出是有效的。在時間T1處,未 發(fā)現(xiàn)所述碼的半解碼器306指示"未命中",這要求將它的輸入發(fā)送到全解碼器310。右邊的 解碼器(例如,308)不能繼續(xù)進行,因為由于半解碼器306的失敗,碼邊界未知。全解碼器310 提供答案,并且隨后在時間T2中,右邊的剩余的半解碼器可以繼續(xù)。
[0056] -旦全解碼器完成,剩余的半解碼器就跟著做(在與全解碼器相同的周期或之后 的周期中)。
[0057]解碼器選擇單元314從左到右識別許多解碼中的有效解碼,消除跨越數(shù)據(jù)邊界的 "偽,,解碼。
[0058]圖3因此描繪示例并行霍夫曼數(shù)據(jù)解碼器,其包括使用靜態(tài)隨機存取存儲器 (SRAM)構造的多個(在非限制性示例中128個)半解碼器302、304、306、308(僅示出少數(shù)以避 免混亂)以及使用三態(tài)CAM(TCAM)構造的一個全解碼器310。圖3的并行解碼器在一個時鐘周 期中并行地推測性地解碼多達128個碼字(相較于在當前系統(tǒng)中每周期僅少數(shù)比特)。半解 碼器302、304、306、308是使用31^1構造的,通常具有僅使用512到1024個常見碼字的9-10個 地址輸入。全碼字解碼器310是使用包含全部碼字的三態(tài)CAM(TCAM)構造的,所述全部碼字 包括不常見以及常見碼字。注意,全霍夫曼解碼器表中的條目的總數(shù)(在第一和第二級中) 將為如下(基于在zlib點net處發(fā)現(xiàn)的zlib源代碼,被呈現(xiàn)為"點"以避免包括瀏覽器可 執(zhí)行代碼)。
[0059] · (9,6)情況:用于長度/文字的852+用于距離的592 =總共1444;將其與需要2**9 +2**6 =總共576的半解碼器相比較;
[0060] · (1〇,7)情況:用于長度文字的1332+用于距離的400 =總共1732;將其與需要2** 10+2#7 =總共1152的半解碼器相比較。
[0061 ] 半解碼器302、304、306、308每一個具有以1比特的重疊間隔采樣128比特數(shù)據(jù)的28 比特輸入,因此使得推測成為可能。
[0062]全解碼器310具有經(jīng)由復用器312從來自Μ比特數(shù)據(jù)的Μ個28比特的間隔中的一個 復用的28比特輸入,而Μ比特數(shù)據(jù)被具有來自下一數(shù)據(jù)周期的數(shù)據(jù)的27比特擴展,以能夠解 碼跨越Μ比特邊界的28比特數(shù)據(jù)。當半解碼器不能解碼碼字時,半解碼器通過復用器312將 它的輸入有效地轉發(fā)到全解碼器;解碼器選擇單元314從許多解碼中選擇有效的解碼后的 碼字。(如上討論的,包括超前比特的保持寄存器的整個輸出寬度對復用器312是可用的,并 且基于來自選擇單元314的選擇信號選擇適當?shù)谋忍?對應于未命中的半解碼器),并且將 所述適當?shù)谋忍芈酚傻饺獯a器310。
[0063]注意,在通常情況下,128、28和27的示例值可以分別使用Μ(輸入數(shù)據(jù)的塊的寬 度)、Ν(到每一個半解碼器的輸入的大小)和Κ(Ν-1,超前比特的數(shù)目)的任意值替代。因此, 輸入數(shù)據(jù)流399的被編號為0到Μ-1的Μ比特被饋送到超前寄存器397,并且隨后被饋送到保 持寄存器395。在圖3和4的非限制示例中,Μ= 128。同時,從輸入流399將0到Ν-2的Ν-1比特 (在圖3和4的非限制性示例中Ν = 28)抽取到保持寄存器395的超前部分393。保持寄存器395 的主部分391因此包括輸入數(shù)據(jù)流399的0到Μ-1比特,而超前抽頭繞過超前寄存器397,并且 因此保持寄存器395的超前部分393包括來自下一周期的0到Ν-2的Ν-1比特(在圖3和4的非 限制性示例中Ν=28),因為超前寄存器397被所述抽頭繞過。這些是Μ到Μ+Ν-1比特,即,在非 限制性示例中的129到155比特。同樣,為了避免混淆,注意半解碼器片段是28比特寬,但是 僅有27個超前比特加上1個重疊比特。
[0064]在一些實施例中,半解碼器每一個具有以1比特的重疊間隔采樣128比特數(shù)據(jù)的28 比特輸入,因此使得推測成為可能;并且全解碼器具有來自Μ比特數(shù)據(jù)的Μ個28比特的間隔 中的一個復用的28比特輸入,而所述Μ比特數(shù)據(jù)被具有來自下一數(shù)據(jù)周期的數(shù)據(jù)的27比特 擴展,以能夠解碼跨越Μ比特邊界的28比特數(shù)據(jù)。當半解碼器不能解碼碼字時,半解碼器通 過復用器將它的輸入轉發(fā)到全解碼器。因此,在圖3的非限制性示例中,半解碼器302具有0 到N-l(27)的輸入比特,半解碼器304具有1到Ν(28)的輸入比特,半解碼器306具有Ρ到Ν+Ρ-1 的輸入比特,依此類推。
[0065] 可變長度碼字由全解碼器(按需)以及由半解碼器302、304、306、308解碼為固定長 度碼并且被放置在準備用于LZ字典查找的單獨的通道(這里,0到15的16個通道)中。
[0066] 圖5示出示例編碼樹。存在16384+8192+."+1+1 =總共32768次出現(xiàn);64+32+."+1+1 = 128個長于8比特的碼字的出現(xiàn);以及32+16+…+1+1 = 64個長于9比特的碼字的出現(xiàn)。對于 2 ~ 8的SRAM,16個半解碼器在相同周期中完成的概率= 94%,而對于2~9的SRAM,16半解碼器 在相同周期中完成的概率= 97%。注意,許多符號分布可以導致更平衡的樹,并且碼字的更 大部分可以落在半解碼器的SRAM外。因此,可能期望2~10個條目或更大的表。因為這是全部 數(shù)據(jù)相關的,所以給予這里的教導,技術人員可以使用基準文件選擇表大小。與虛線上面的 碼相比較,虛線下面的碼不常出現(xiàn);在半解碼器中發(fā)現(xiàn)虛線上面的碼,而僅在全解碼器中發(fā) 現(xiàn)在虛線下面的碼。
[0067]圖6示出更平衡的樹的示例。數(shù)據(jù)在其中具有256個符號;25%的符號每個出現(xiàn)400 次;25%出現(xiàn)200次;并且50%每個出現(xiàn)100次。8個符號意味著4的深度,而256個符號意味著 9的深度。因此,最大9比特將對256個符號的整個集合進行編碼。如果采用8比特的表,那將 使得(100+100)/800 = 25%的符號在表外。同樣,與虛線上面的碼相比較,虛線下面的碼不 常出現(xiàn);在半解碼器中發(fā)現(xiàn)虛線上面的碼,而僅在全解碼器中發(fā)現(xiàn)在虛線下面的碼。這里,8 比特的表可能導致太多的未命中,使得9比特的表是優(yōu)選的。
[0068]現(xiàn)在考慮圖2中更詳細地示出的圖3和4的全解碼器310。其包含整個霍夫曼表,具 有多達288個文字/長度符號和多達32個距離符號。每一個條目指示解碼后的符號(9比特); 碼字比特(1-15)的數(shù)目(4比特);以及適當?shù)目刂谱址?例如無效碼字)??梢源嬖诙噙_13個 額外的比特,其是碼的增強(arguments); 15+13 = 28。如所述,對于288個文字/長度符號和 多達32個距離符號,288+32小于512(2的次最高次冪),意味著512個TCAM條目應該是足夠 的。輸入是對應于符號PABQ的比特序列110010111。這被用作用于查詢內容可尋址存儲器 (CAM)的關鍵字。對于每一個"三態(tài)數(shù)字",CAM條目(碼字)可以具有0、1或"不關心"(X)的值。 對應的RAM條目包括符號及其長度。CAM中的第一個"命中"針對對應于符號P、具有3比特長 度的110XXX。所述輸入隨后向左移位3比特,并且下一個"命中"針對對應于符號A、具有1比 特長度的0ΧΧΧΧΧ。所述輸入隨后向左移位1比特,并且下一個"命中"針對對應于符號B、具有 2比特長度的10XXXX。
[0069] 現(xiàn)在考慮半解碼器302、304、306、308。每一個半解碼器包含霍夫曼表的一部分并 且是基于SRAM的。每一個半解碼器存儲常見的長度/文字符號,并且存儲常見的距離符號。 在一個或多個非限制性實施例中,被解碼的碼字是8-10比特寬,這導致2~8到2~10個條目的 SRAM。每一個條目指示:
[0070] ?符號(9比特)
[0071] ?碼字比特(0-10)的數(shù)目(4比特)
[0072] ?控制字符(例如無效碼字)。
[0073] 寬的SRAM是期望的,因為每比特的面積最小,并且可以快速加載霍夫曼表。出于相 同原因,10比特碼字將導致少于2~10次寫入。霍夫曼編碼工作良好,例如,如果在行內選擇 "不關心"的比特,則可以在一個周期中寫入用于每一行的SRAM條目。例如,對于輸入碼字 lOOOOOxxx,SRAM位置100000,條目0-7全部包含相同符號、符號長(SymLen)……。在最好的 情況下,對128x144的SRAM的128次寫入將加載所述表。
[0074] 參考圖7,對于未由半解碼器處理的碼字,長碼字進行索引的SRAM條目將具有告訴 系統(tǒng)去其他地方尋找(如上討論的,經(jīng)由由塊314控制的復用器路由到全解碼器的該半解碼 器的比特)的控制比特。半解碼器可以具有例如2 9或21()個條目。參考755,半解碼器將因此只 看輸入的開頭的9或10比特。因為最常見的符號使用最小數(shù)目的比特,并且因為半解碼器僅 包括更頻繁地出現(xiàn)的符號,半解碼器將能夠發(fā)現(xiàn)其能夠通過只看開頭的9或10比特譯碼的 碼字。當未定義開頭的9或10比特時,如上所述,所述比特被路由到全解碼器。
[0075] 此外,關于半解碼器,現(xiàn)在將注意力給予到圖8。如其中所見,文字和距離可以被存 儲在分開的表899、897中。從外部來看,其看上去像僅單個表。邏輯(到復用器895的選擇信 號)選擇一個表或其他表。通過上下文選擇距離碼:如果前面的符號是長度,則所述邏輯告 訴復用器選擇距離表897;如果前面的符號是文字,則所述邏輯告訴復用器選擇文字長度表 899。復用器輸出視情況包括符號、符號長(len)和任何控制比特。
[0076] 各種優(yōu)化是可能的。例如,可以基于期望的壓縮率減少半解碼器的數(shù)目。如果期望 2:1的壓縮率,則以1/2的輸出速率取得輸入,因此多達1/2的半解碼器可能是必要的;例如, 8字節(jié)的輸入寬度和16字節(jié)的輸出寬度。對于未壓縮的數(shù)據(jù),輸出速率將下降到輸入速率。
[0077] 圖9示出上面討論的非限制性示例性能數(shù)據(jù)。
[0078] -個或多個實施例有利地使用TCAM和SRAM每周期解碼多個碼。這應該與先前的技 術相區(qū)別,在先前的技術中并行獲得N個結果,但是僅一個結果可以是有效碼,使得在這種 現(xiàn)有系統(tǒng)中,實際上每周期僅一個霍夫曼符號被解碼。
[0079] DEFLATE標準(更一般地,動態(tài)的基于樹的霍夫曼碼)需要是基于表的;因此,一個 或多個實施例采用SRAM或TCAM或兩者。
[0080] 注意,相對于解碼每周期每個流1個符號地解碼的多個獨立流,一個或多個實施例 并行解碼單個流。
[0081] -個或多個實施例因此提供并行霍夫曼數(shù)據(jù)解碼器,其包括使用SRAM構造的至少 一個半解碼器和使用三態(tài)CAM(TCAM)構造的至少一個全解碼器、以及從多個解碼中選擇有 效的解碼后的碼字的解碼器選擇單元。如所述,128、28、27的示例霍夫曼解碼器值可以分別 使用M、N和K的任意值替代。在一個或多個實施例中,并行解碼器在一個時鐘周期中并行地 推測性地解碼多達128個碼字;半解碼器是使用SRAM構造的,通常具有僅使用512到1024個 常見碼字的9-10個地址輸入;并且全碼字解碼器是使用包含全部碼字的三態(tài)CAM(TCAM)構 造的,所述全部碼字也包括不常見的碼字。
[0082]在一些實施例中,半解碼器每一個具有以1比特的重疊間隔采樣128比特數(shù)據(jù)的28 比特輸入,因此使得推測成為可能;并且全解碼器具有從Μ比特數(shù)據(jù)的Μ個28比特的間隔中 的一個復用的28比特輸入,而Μ比特數(shù)據(jù)被通過具有來自下一數(shù)據(jù)周期的數(shù)據(jù)的27比特擴 展以能夠解碼跨越Μ比特邊界的28比特數(shù)據(jù)。當半解碼器不能解碼碼字時,半解碼器通過復 用器將它的輸入轉發(fā)到全解碼器。
[0083]圖中的元素通常用硬件實現(xiàn)。在一個或多個實施例中,超前寄存器397和保持寄存 器395是可以使用已知技術實現(xiàn)的硬件寄存器;以TCAM實現(xiàn)全解碼器;以SRAM(或可替換地, DRAM)實現(xiàn)半解碼器;使用已知的復用電路實現(xiàn)復用器312;并且以硬件狀態(tài)機和隨機邏輯 實現(xiàn)選擇單元314。
[0084]給予迄今為止的討論,將理解,一般地說,根據(jù)本發(fā)明的一方面的用于將根據(jù)霍夫 曼碼編碼的數(shù)據(jù)解碼的示例并行霍夫曼數(shù)據(jù)解碼器包括:保持寄存器395,其具有保持主數(shù) 據(jù)輸入的主部分391、保持超前輸入的超前部分393、以及多個輸出。還包括多個即Μ個半解 碼器302、304、306、308,每一個半解碼器具有輸入和輸出,所述輸入耦接到所述保持寄存器 的所述多個輸出中的對應的一個。所述輸入各自從所述保持寄存器的所述輸出獲得所述保 持寄存器的所述主部分和所述超前部分中的數(shù)據(jù)的連續(xù)的重疊部分。另一元件是以三態(tài)內 容可尋址存儲器實現(xiàn)的全解碼器310。所述全解碼器具有輸入和輸出,所述輸入可選擇性地 連接以獲得數(shù)據(jù)的所述重疊部分中的給定一個。解碼器選擇和排序單元314具有多個輸入、 選擇輸出和多個輸出通道,所述多個輸入耦接到所述半解碼器的所述輸出和所述全解碼器 的所述輸出,所述選擇輸出控制所述全解碼器輸入的所述選擇性連接。所述全解碼器包括 所述霍夫曼碼的全部碼字,而所述半解碼器包括所述霍夫曼碼的頻繁出現(xiàn)的碼字的子集。 當沒有遇到在所述半解碼器中不可獲取的碼字時,所述半解碼器并行地在單個時鐘周期中 將所述頻繁出現(xiàn)的碼字中的Μ個解碼。當遇到在所述半解碼器中不可獲取的碼字時(見圖 4),所述解碼器選擇和排序單元314使得意圖用于所述半解碼器中的對應的一個(例如, 306)的輸入被施加到所述全解碼器310的所述輸入,該意圖用于所述半解碼器中的對應的 一個的輸入包括在所述半解碼器中的所述對應的一個中不可獲取的所述碼字。
[0085] 在一個或多個實施例中,所述半解碼器以諸如SRAM或DRAM的、比所述三態(tài)內容可 尋址存儲器更便宜的技術實現(xiàn)。
[0086] 一些實施例進一步包括超前寄存器397,其具有數(shù)據(jù)輸入以獲得數(shù)據(jù)流399,并且 具有耦接到所述保持寄存器395的所述主部分391的輸出。如在389所見,所述保持寄存器通 過抽取所述數(shù)據(jù)流和繞過所述超前寄存器來獲得所述超前輸入。
[0087] 一些實施例進一步包括復用器312,其具有耦接到所述保持寄存器395的第一輸 入、選擇輸入以及耦接到所述全解碼器310的所述輸入的輸出。所述解碼器選擇和排序單元 314通過發(fā)送選擇信號到所述復用器312的所述選擇輸入,使得意圖用于所述半解碼器中的 對應的一個(例如,306)的所述輸入被施加到所述全解碼器310的所述輸入,該意圖用于所 述半解碼器中的對應的一個的所述輸入包括在所述半解碼器中的所述對應的一個中不可 獲取的所述碼字。
[0088]在一個或多個實施例中,數(shù)據(jù)的所述重疊部分重疊 1比特。
[0089]此外,給予迄今為止的討論,將理解,根據(jù)本發(fā)明的另一方面的用于并行地將根據(jù) 霍夫曼碼編碼的數(shù)據(jù)解碼的示例方法包括:在保持寄存器395中保持主數(shù)據(jù)輸入391和超前 輸入393;并且向多個即Μ個半解碼器302、304、306、308提供所述主數(shù)據(jù)輸入和所述超前輸 入的連續(xù)的重疊部分。所述半解碼器包括所述霍夫曼碼的頻繁出現(xiàn)的碼字的子集。當沒有 遇到在所述半解碼器中不可獲取的碼字時,進一步的步驟包括并行地在單個時鐘周期中將 所述頻繁出現(xiàn)的碼字中的Μ個解碼。另一方面,當遇到在所述半解碼器中不可獲取的碼字 時,進一步的步驟包括將意圖用于所述半解碼器中的對應的一個(例如306)的輸入施加到 以三態(tài)內容可尋址存儲器實現(xiàn)的全解碼器310的輸入,該意圖用于所述半解碼器中的對應 的一個的輸入包括在所述半解碼器中的所述對應的一個中不可獲取的所述碼字。所述全解 碼器包括所述霍夫曼碼的全部碼字。
[0090] 在一些情況下的進一步的步驟包括以諸如SRAM或DRAM的比所述三態(tài)內容可尋址 存儲器更便宜的技術實現(xiàn)所述半解碼器。
[0091] 在一些實施例中,進一步的步驟包括在超前寄存器397中保持所述主數(shù)據(jù)輸入,而 所述超前輸入(見389)繞過所述超前寄存器。
[0092] 在一些實施例中,使用復用器312實現(xiàn)將意圖用于所述半解碼器中的對應的一個 的輸入施加到所述全解碼器的輸入。
[0093] 示例性集成電路和設計結構細節(jié)
[0094] 這里描述的一個或多個示例性方法可以用在集成電路芯片的制造、測試或操作 中。集成電路芯片可以由制造者以未加工的晶圓形式(即,作為具有多個未封裝的芯片的單 個晶圓)作為空裸芯(bare die)分發(fā),或以封裝的形式分發(fā)。在后者的情況下,芯片被安裝 在單個芯片封裝(諸如塑料載體,具有附接到母板或其他更高級載體的導線)中或在多芯片 封裝(諸如陶瓷載體,其具有表面互連或埋入式互連中的任一個或兩者)中。在任何情況下, 隨后將芯片與其他芯片、分立的電路元件和/或其他信號處理設備集成為(a)諸如母板的中 間產品或(b)最終產品的一部分。最終產品可以是包括集成電路芯片的任何產品。
[0095] 圖10示出了例如在半導體1C邏輯設計、仿真、測試、布圖和制造中使用的示例性設 計流程1900的方塊圖。設計流程1900包括用于處理設計結構或器件以產生上述以及圖2、3、 4、7和8中示出的設計結構和/或器件的邏輯上或其他功能上等效表示的過程、機器和/或機 制。由設計流程1900處理和/或產生的設計結構可以在機器可讀傳輸或存儲介質上被編碼 以包括數(shù)據(jù)和/或指令,所述數(shù)據(jù)和/或指令在數(shù)據(jù)處理系統(tǒng)上執(zhí)行或以其他方式處理時, 產生硬件組件、電路、器件或系統(tǒng)的邏輯上、結構上、機械上或其他功能上的等效表示。機器 包括但不限于用于1C設計過程(例如設計、制造或仿真電路、組件、器件或系統(tǒng))的任何機 器。例如,機器可以包括:用于產生掩模的光刻機、機器和/或設備(例如電子束直寫儀)、用 于仿真設計結構的計算機或設備、用于制造或測試過程的任何裝置,或用于將所述設計結 構的功能上的等效表示編程到任何介質中的任何機器(例如,用于對可編程門陣列進行編 程的機器)。
[0096] 設計流程1900可隨被設計的表示類型而不同。例如,用于構建專用IC(ASIC)的設 計流程1900可能不同于用于設計標準組件的設計流程1900,或不同于用于將設計實例化到 可編程陣列(例如,由Altera? Inc.或Xilinx? Inc.提供的可編程門陣列(PGA)或現(xiàn)場可編 程門陣列(FPGA))中的設計流程1900。
[0097]圖10示出了多個此類設計結構,其中包括優(yōu)選地由設計過程1910處理的輸入設計 結構1920。設計結構1920可以是由設計過程1910生成和處理以產生硬件器件的邏輯上等效 的功能表示的邏輯仿真設計結構。設計結構1920還可以或備選地包括數(shù)據(jù)和/或程序指令, 所述數(shù)據(jù)和/或程序指令由設計過程1910處理時,生成硬件器件的物理結構的功能表示。無 論表示功能和/或結構設計特性,均可以使用例如由核心開發(fā)人員/設計人員實施的電子計 算機輔助設計(ECAD)生成設計結構1920。當編碼在機器可讀數(shù)據(jù)傳輸、門陣列或存儲介質 上時,設計結構1920可以由設計過程1910內的一個或多個硬件和/或軟件模塊訪問和處理 以仿真或以其他方式在功能上表示例如圖2、3、4、7和8中示出的那些電子組件、電路、電子 或邏輯模塊、裝置、器件或系統(tǒng)。因此,設計結構1920可以包括文件或其他數(shù)據(jù)結構,其中包 括人類和/或機器可讀源代碼、編譯結構和計算機可執(zhí)行代碼結構,當所述文件或其他數(shù)據(jù) 結構由設計或仿真數(shù)據(jù)處理系統(tǒng)處理時,在功能上仿真或以其他方式表示電路或其他級別 的硬件邏輯設計。此類數(shù)據(jù)結構可以包括硬件描述語言(HDL)設計實體或遵循和/或兼容低 級HDL設計語言(例如Veri log和VHDL)和/或高級設計語言(例如C或C++)的其他數(shù)據(jù)結構。
[0098]設計過程1910優(yōu)選地采用和結合硬件和/或軟件模塊,所述模塊用于合成、轉換或 以其他方式處理圖2、3、4、7和8中示出的組件、電路、器件或邏輯結構的設計/仿真功能等價 物以生成可以包含設計結構(例如設計結構1920)的網(wǎng)表1980。網(wǎng)表1980例如可以包括編譯 或以其他方式處理的數(shù)據(jù)結構,所述數(shù)據(jù)結構表示描述與集成電路設計中的其他元件和電 路的連接的線纜、分離組件、邏輯門、控制電路、I/O設備、模型等的列表。網(wǎng)表1980可以使用 迭代過程合成,其中網(wǎng)表1980被重新合成一次或多次,具體取決于器件的設計規(guī)范和參數(shù)。 對于在此所述的其他設計結構類型,網(wǎng)表1980可以記錄在機器可讀數(shù)據(jù)存儲介質上或編程 到可編程門陣列中。所述介質可以是非易失性存儲介質,例如磁或光盤驅動器、可編程門陣 列、壓縮閃存或其他閃存。此外或備選地,所述介質可以是可在其上經(jīng)由因特網(wǎng)或其他適合 聯(lián)網(wǎng)手段傳輸和中間存儲數(shù)據(jù)分組的系統(tǒng)或高速緩沖存儲器、緩沖器空間或導電或光導器 件和材料。
[0099] 設計過程1910可以包括用于處理包括網(wǎng)表1980在內的各種輸入數(shù)據(jù)結構類型的 硬件和軟件模塊。此類數(shù)據(jù)結構類型例如可以駐留在庫元件1930內并包括一組常用元件、 電路和器件,其中包括給定制造技術(例如,不同的技術節(jié)點,32納米、45納米、90納米等)的 模型、布圖和符號表示。所述數(shù)據(jù)結構類型還可包括設計規(guī)范1940、特征數(shù)據(jù)1950、檢驗數(shù) 據(jù)1960、設計規(guī)則1970和測試數(shù)據(jù)文件1985,它們可以包括輸入測試模式、輸出測試結果和 其他測試信息。設計過程1910還可例如包括標準機械設計過程,例如用于諸如鑄造、成型和 模壓成形等操作的應力分析、熱分析、機械事件仿真、過程仿真。機械設計領域的技術人員 可以在不偏離本發(fā)明的范圍和精神的情況下理解在設計過程1910中使用的可能機械設計 工具和應用的范圍。設計過程1910還可包括用于執(zhí)行諸如定時分析、檢驗、設計規(guī)則檢查、 放置和路由操作之類的標準電路設計過程的模塊。
[0100] 設計過程1910采用和結合邏輯和物理設計工具(例如HDL編譯器)以及仿真建模工 具以便與任何其他機械設計或數(shù)據(jù)(如果適用)一起處理設計結構1920連同示出的部分或 全部支持數(shù)據(jù)結構,從而生成第二設計結構1990。設計結構1990以用于機械設備和結構的 數(shù)據(jù)交換的數(shù)據(jù)格式(例如以IGES、DXF、Parasolid XT、JT、DRC或任何其他用于存儲或呈現(xiàn) 此類機械設計結構的適合格式)駐留在存儲介質或可編程門陣列上。類似于設計結構1920, 設計結構1990優(yōu)選地包括一個或多個文件、數(shù)據(jù)結構或其他計算機編碼的數(shù)據(jù)或指令,它 們駐留在傳輸或數(shù)據(jù)存儲介質上,并且由ECAD系統(tǒng)處理時生成圖2、3、4、7和8中示出的本發(fā) 明的一個或多個實施例的邏輯上或以其他方式在功能上等效的形式。在一個實施例中,設 計結構1990可以包括在功能上仿真圖2、3、4、7和8中示出的器件的編譯后的可執(zhí)行HDL仿真 模型。
[0101] 設計結構1990還可以采用用于集成電路的布圖數(shù)據(jù)交換的數(shù)據(jù)格式和/或符號數(shù) 據(jù)格式(例如以GDSII(GDS2)、GL1、0ASIS、圖文件或任何其他用于存儲此類設計數(shù)據(jù)結構的 適合格式存儲的信息)。設計結構1990可以包括信息,例如符號數(shù)據(jù)、圖文件、測試數(shù)據(jù)文 件、設計內容文件、制造數(shù)據(jù)、布圖參數(shù)、線纜、金屬級別、通孔、形狀、用于在整個生產線中 路由的數(shù)據(jù),以及制造商或其他設計人員/開發(fā)人員制造上述以及圖2、3、4、7和8中示出的 器件或結構所需的任何其他數(shù)據(jù)。設計結構1990然后可以繼續(xù)到階段1995,例如,在階段 1995,設計結構1990:繼續(xù)到流片(tape-out ),被發(fā)布到制造公司、被發(fā)布到掩模室(mask house )、被發(fā)送到其他設計室,被發(fā)回給客戶等。
[0102] 這里使用的術語僅用于描述特定實施例的目的,并且無意限制本發(fā)明。如這里使 用的,單數(shù)形式"一"和"該/所述"也意圖包括復數(shù)形式,除非上下文清楚地另外指示。將進 一步理解的是,當在本說明書中使用時,術語"包括"和/或"包含"指明所陳述的特征、整體、 步驟、操作、元件和/或組件的存在,但不排除存在或增加一個或多個其它特征、整體、步驟、 操作、元件、組件和/或它們的組。
[0103] 在所附權利要求中的對應的結構、材料、動作、和全部部件或步驟加功能元素的等 同物意圖包括用于結合如具體要求保護的其他要求保護的元素執(zhí)行所述功能的任何結構、 材料、或動作。
[0104] 本發(fā)明的各種實施例的描述為了說明的目的而被呈現(xiàn),但意圖不是窮盡性的或限 于所公開的實施例。在不背離所描述的實施例的范圍和精神的情況下,許多修改和變化對 本領域普通技術人員來說將是清楚的。選擇這里使用的術語以便最好地解釋實施例的原 理、實際應用或相對于市場中找到的技術的技術改進,或以便使得其它本領域普通技術人 員能夠理解這里公開的實施例。
【主權項】
1. 一種用于將根據(jù)霍夫曼碼編碼的數(shù)據(jù)解碼的并行霍夫曼數(shù)據(jù)解碼器,所述并行霍夫 曼數(shù)據(jù)解碼器包括: 保持寄存器,其具有保持主數(shù)據(jù)輸入的主部分、保持超前輸入的超前部分、以及多個輸 出; 多個即Μ個半解碼器,每一個半解碼器具有輸入和輸出,所述輸入耦接到所述保持寄存 器的所述多個輸出中的對應的一個,所述輸入各自從所述保持寄存器的所述輸出獲得所述 保持寄存器的所述主部分和所述超前部分中的數(shù)據(jù)的連續(xù)的重疊部分; 全解碼器,其以三態(tài)內容可尋址存儲器實現(xiàn),所述全解碼器具有可選擇性地連接以獲 得數(shù)據(jù)的所述重疊部分中的給定一個的輸入、和輸出; 解碼器選擇和排序單元,其具有耦接到所述半解碼器的所述輸出和所述全解碼器的所 述輸出的多個輸入、控制所述全解碼器輸入的所述選擇性連接的選擇輸出、和多個輸出通 道; 其中: 所述全解碼器包括所述霍夫曼碼的全部碼字; 所述半解碼器包括所述霍夫曼碼的頻繁出現(xiàn)的碼字的子集; 當沒有遇到在所述半解碼器中不可獲取的碼字時,所述半解碼器并行地在單個時鐘周 期中將所述頻繁出現(xiàn)的碼字中的Μ個解碼;以及 當遇到在所述半解碼器中不可獲取的碼字時,所述解碼器選擇和排序單元使得意圖用 于所述半解碼器中的對應的一個的輸入被施加到所述全解碼器的所述輸入,該意圖用于所 述半解碼器中的對應的一個的輸入包括在所述半解碼器中的所述對應的一個中不可獲取 的所述碼字。2. 如權利要求1所述的并行霍夫曼數(shù)據(jù)解碼器,其中,以比所述三態(tài)內容可尋址存儲器 更便宜的技術實現(xiàn)所述半解碼器。3. 如權利要求2所述的并行霍夫曼數(shù)據(jù)解碼器,其中,所述更便宜的技術包括靜態(tài)隨機 存取存儲器。4. 如權利要求2所述的并行霍夫曼數(shù)據(jù)解碼器,其中,所述更便宜的技術包括動態(tài)隨機 存取存儲器。5. 如權利要求1所述的并行霍夫曼數(shù)據(jù)解碼器,進一步包括超前寄存器,其具有獲得數(shù) 據(jù)流的數(shù)據(jù)輸入,并且具有耦接到所述保持寄存器的所述主部分的輸出,其中所述保持寄 存器通過抽取所述數(shù)據(jù)流和繞過所述超前寄存器來獲得所述超前輸入。6. 如權利要求1所述的并行霍夫曼數(shù)據(jù)解碼器,進一步包括復用器,其具有耦接到所述 保持寄存器的第一輸入、選擇輸入、以及耦接到所述全解碼器的所述輸入的輸出,其中所述 解碼器選擇和排序單元通過發(fā)送選擇信號到所述選擇輸入來使得意圖用于所述半解碼器 中的所述對應的一個的所述輸入被施加到所述全解碼器的所述輸入,該意圖用于所述半解 碼器中的所述對應的一個的所述輸入包括在所述半解碼器中的所述對應的一個中不可獲 取的所述碼字。7. 如權利要求1所述的并行霍夫曼數(shù)據(jù)解碼器,其中,數(shù)據(jù)的所述重疊部分重疊1比特。8. -種有形地在非臨時性機器可讀介質中實施的設計結構,用于設計、制造或測試集 成電路,所述設計結構包括用于將根據(jù)霍夫曼碼編碼的數(shù)據(jù)解碼的并行霍夫曼數(shù)據(jù)解碼 器,所述并行霍夫曼數(shù)據(jù)解碼器繼而包括: 保持寄存器,其具有保持主數(shù)據(jù)輸入的主部分、持超前輸入的超前部分、及多個輸出; 多個即Μ個半解碼器,每一個半解碼器具有輸入和輸出,所述輸入耦接到所述保持寄存 器的所述多個輸出中的對應的一個,所述輸入各自從所述保持寄存器的所述輸出獲得所述 保持寄存器的所述主部分和所述超前部分中的數(shù)據(jù)的連續(xù)的重疊部分; 全解碼器,其以三態(tài)內容可尋址存儲器實現(xiàn),所述全解碼器具有可選擇性地連接以獲 得數(shù)據(jù)的所述重疊部分中的給定一個的輸入、和輸出; 解碼器選擇和排序單元,其具有耦接到所述半解碼器的所述輸出和所述全解碼器的所 述輸出的多個輸入、控制所述全解碼器輸入的所述選擇性連接的選擇輸出、和多個輸出通 道; 其中: 所述全解碼器包括所述霍夫曼碼的全部碼字; 所述半解碼器包括所述霍夫曼碼的頻繁出現(xiàn)的碼字的子集; 當沒有遇到在所述半解碼器中不可獲取的碼字時,所述半解碼器并行地在單個時鐘周 期中將所述頻繁出現(xiàn)的碼字中的Μ個解碼;以及 當遇到在所述半解碼器中不可獲取的碼字時,所述解碼器選擇和排序單元使得意圖用 于所述半解碼器中的對應的一個的輸入被施加到所述全解碼器的所述輸入,該意圖用于所 述半解碼器中的對應的一個的輸入包括在所述半解碼器中的所述對應的一個中不可獲取 的所述碼字。9. 如權利要求8所述的設計結構,其中,在所述并行霍夫曼數(shù)據(jù)解碼器中,所述半解碼 器以比所述三態(tài)內容可尋址存儲器更便宜的技術實現(xiàn)。10. 如權利要求9所述的設計結構,其中,在所述并行霍夫曼數(shù)據(jù)解碼器中,所述更便宜 的技術包括靜態(tài)隨機存取存儲器。11. 如權利要求9所述的設計結構,其中,在所述并行霍夫曼數(shù)據(jù)解碼器中,所述更便宜 的技術包括動態(tài)隨機存取存儲器。12. 如權利要求8所述的設計結構,其中,所述并行霍夫曼數(shù)據(jù)解碼器進一步包括超前 寄存器,其具有獲得數(shù)據(jù)流的數(shù)據(jù)輸入,并且具有耦接到所述保持寄存器的所述主部分的 輸出,其中所述保持寄存器通過抽取所述數(shù)據(jù)流和繞過所述超前寄存器來獲得所述超前輸 入。13. 如權利要求8所述的設計結構,其中,所述并行霍夫曼數(shù)據(jù)解碼器進一步包括復用 器,其具有耦接到所述保持寄存器的第一輸入、選擇輸入以及耦接到所述全解碼器的所述 輸入的輸出,其中所述解碼器選擇和排序單元通過發(fā)送選擇信號到所述選擇輸入來使得意 圖用于所述半解碼器中的所述對應的一個的所述輸入被施加到所述全解碼器的所述輸入, 該意圖用于所述半解碼器中的所述對應的一個的所述輸入包括在所述半解碼器中的所述 對應的一個中不可獲取的所述碼字。14. 如權利要求8所述的設計結構,其中,在所述并行霍夫曼數(shù)據(jù)解碼器中,數(shù)據(jù)的所述 重疊部分重疊1比特。15. -種用于并行地將根據(jù)霍夫曼碼編碼的數(shù)據(jù)解碼的方法,所述方法包括: 在保持寄存器中保持主數(shù)據(jù)輸入和超前輸入; 向多個即Μ個半解碼器提供所述主數(shù)據(jù)輸入和所述超前輸入的連續(xù)的重疊部分,所述 半解碼器包括所述霍夫曼碼的頻繁出現(xiàn)的碼字的子集; 當沒有遇到在所述半解碼器中不可獲取的碼字時,并行地在單個時鐘周期中將所述頻 繁出現(xiàn)的碼字中的Μ個解碼; 當遇到在所述半解碼器中不可獲取的碼字時,將意圖用于所述半解碼器中的對應的一 個的輸入施加到以三態(tài)內容可尋址存儲器實現(xiàn)的全解碼器的輸入,該意圖用于所述半解碼 器中的對應的一個的輸入包括在所述半解碼器中的所述對應的一個中不可獲取的所述碼 字,所述全解碼器包括所述霍夫曼碼的全部碼字。16. 如權利要求15所述的方法,進一步包括以比所述三態(tài)內容可尋址存儲器更便宜的 技術實現(xiàn)所述半解碼器。17. 如權利要求15所述的方法,進一步包括以靜態(tài)隨機存取存儲器實現(xiàn)所述半解碼器。18. 如權利要求15所述的方法,進一步包括以動態(tài)隨機存取存儲器實現(xiàn)所述半解碼器。19. 如權利要求15所述的方法,進一步包括在超前寄存器中保持所述主數(shù)據(jù)輸入,而所 述超前輸入繞過所述超前寄存器。20. 如權利要求15所述的方法,其中,使用復用器實現(xiàn)所述將意圖用于所述半解碼器中 的所述對應的一個的所述輸入施加到所述全解碼器的所述輸入。
【文檔編號】H03M7/40GK106027066SQ201610181740
【公開日】2016年10月12日
【申請日】2016年3月28日
【發(fā)明人】B.阿巴利, B.布拉納
【申請人】國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
大埔县| 灯塔市| 高州市| 江城| 永新县| 江永县| 肥乡县| 灵川县| 英超| 曲阳县| 军事| 丽江市| 安达市| 瓦房店市| 宁都县| 句容市| 靖宇县| 莲花县| 边坝县| 临桂县| 隆德县| 勃利县| 尉氏县| 堆龙德庆县| 金溪县| 确山县| 武胜县| 策勒县| 来凤县| 延长县| 延安市| 奉新县| 得荣县| 汝城县| 四平市| 田林县| 辛集市| 东丰县| 波密县| 贵定县| 灵台县|