TWI485992B - 猛禽碼之編碼加速裝置與方法 - Google Patents

猛禽碼之編碼加速裝置與方法 Download PDF

Info

Publication number
TWI485992B
TWI485992B TW101131875A TW101131875A TWI485992B TW I485992 B TWI485992 B TW I485992B TW 101131875 A TW101131875 A TW 101131875A TW 101131875 A TW101131875 A TW 101131875A TW I485992 B TWI485992 B TW I485992B
Authority
TW
Taiwan
Prior art keywords
operation sequence
encoding
sequence
symbol
matrix
Prior art date
Application number
TW101131875A
Other languages
English (en)
Other versions
TW201409946A (zh
Inventor
Shiuan Tung Chen
Hsin Ta Chiao
Hung Min Sun
Chia Hsing Ho
Original Assignee
Ind Tech Res Inst
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 Ind Tech Res Inst filed Critical Ind Tech Res Inst
Priority to TW101131875A priority Critical patent/TWI485992B/zh
Priority to US13/726,809 priority patent/US8839067B2/en
Publication of TW201409946A publication Critical patent/TW201409946A/zh
Application granted granted Critical
Publication of TWI485992B publication Critical patent/TWI485992B/zh

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3761Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/611Specific encoding aspects, e.g. encoding by means of decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6561Parallelized implementations

Description

猛禽碼之編碼加速裝置與方法
本揭露係關於一種猛禽碼(Raptor code)之編碼加速的裝置與方法。
串流媒體(streaming media)是一種網路多媒體傳播方式。當一伺服器收到用戶要觀賞影音資料的需求時,就將這些影音資料分解成多個小封包(packet)並且一一傳送到用戶端;用戶端程式將這些封包內容一一重組,即時呈現在用戶端的顯示裝置上。如此,這些影音資料源源不絕的由伺服器流動到用戶端,產生一個持續不斷的影音資料流。此多媒體播送方式稱為串流媒體。
對用戶而言,串流媒體的傳播方式可以縮短看到影音資料內容的時間,從而判斷所看到的資料內容是不是所需求的影音資料,而不用花費大量的金錢與時間來下載無用的資料,更讓用戶可以像使用家中的電視或錄放影裝置一樣方便地隨點隨看,也可以向前或向後快轉,使得觀賞網路影音更為平易近人。對內容提供者而言,設計良好的串流媒體的方式只傳遞資料與播送,不會在用戶端留下任何拷貝,此也確保了版權所有者的權利。
隨著寬頻網路的普及化,無線網路的應用範圍日漸廣泛。在網路影音傳播中,常發生位元錯誤(bit error)或是封 包遺失(packet loss)的情形。一般的網路影音傳播技術會加上錯誤更正碼(Forward Error Correction,FEC)的編碼,來回復原本的資料或復原遺失的封包。一般而言,FEC依照部署位置可分為實體層(physical layer)、媒體存取控制層(Medium Access Control,MAC)、以及應用層(application layer)。相較於其他兩層的FEC,應用層的FEC(縮寫為AL-FEC)有下列的特性:區塊長度較長,可提供較佳的糾正錯誤能力;有高效的編解碼效率,僅需軟體資源,容易部署在各種裝置上;針對不同的應用,可選擇不同的區塊長度;擁有靈活的糾正錯誤能力;以及針對不同的被傳輸資料及不同的封包遺失率,可設置不同的保護參數。
猛禽碼或猛禽Q碼(RaptorQ code)是常見的應用層錯誤更正碼(AL-FEC)之一。在網際網路工程任務組(Internet Engineering Task Force,IETF)所發布的徵求意見書(Request For Comments,RFC)文件中,規範了猛禽碼或猛禽Q碼的實作細節。如第一圖所示,猛禽碼基本上可分為兩個階段的編碼,第一階段是前處理(pre-coding)運算110,第二階段為利用一般的編碼模式去編碼,例如使用LT編碼(Luby transform coding)運算120。實作猛禽碼的編碼大部分的時間是花在第一階段的前處理運算,此前處理運算是將多個輸入符元(input symbol)先做一個事先的編碼,主要是進行解聯立方程組的運算,以產生中間符元(intermediate symbols)130。
猛禽碼的編碼運算在經過一段複雜的前處理階段,以及之後的LT編碼後,猛禽碼可產生很簡單的輸出符元(output symbol)分布。有一篇論文揭露一種LT碼的編碼演算法,此演算法法將輸入符元進行編碼,所產生之每一輸出符元都是一或多個輸入符元的互斥或(Exclusive OR,XOR)運算的結果。此編碼法僅決定有多少比例的輸出符元是由特定數量(degree)但隨機選擇的輸入符元組成。只要此特定數量的分布滿足一特定條件時,則只要有略比輸入符元的個數多一些的輸出符元,就會有極高的機率將輸入符元完整地解出。
在猛禽碼或猛禽Q碼之編碼的前處理運算中,常利用高斯消去法(Gaussian Elimination)運算來解聯立方程組。例如,有一篇論文揭露一種猛禽碼的解碼技術,此解碼技術採用漸進式(Incremental)的高斯消去法運算步驟,來加速單一區塊解碼的高斯消去法運算過程,使得在進行解碼運算時能夠有更好的效率。有一篇論文揭露的猛禽碼的編解碼技術是修改3GPP標準中一個A矩陣的建構方式,來達到單一區塊高斯消去法運算的較佳的運算效率,其中此矩陣A是用來將中間符元編碼成編碼符元;或是將收到的編碼符元解碼成中間符元。
有一篇論文揭露的猛禽碼的解碼技術是接收端在解碼時,當收到的資料量不足以至於解碼失敗時,可繼續接收資料來解碼;並且當解碼失敗時,接收新的資料後,採用 一種新演算法,來繼續先前的解碼進度,不必重啟解碼運算,以讓單一區塊之解碼運算的過程中不會產生運算資源上的浪費。有一篇論文揭露的猛禽碼的解碼技術是將猛禽碼應用在網路編碼(network coding)的網路環境中,並修正猛禽碼本身特定數量之輸入符元的分佈(degree distribution),使得猛禽碼可在網路編碼的網路環境中得到最佳的解碼成功率;此解碼技術使用多個發送器(sender)在同一時間針對同一區塊進行編碼動作,且各發送器進行編碼動作時,彼此之間沒有經過最佳化的協調。
有一些專利文獻揭示了編碼與解碼的技術。例如有一篇專利文獻揭示了一種基於連鎖反應碼(chain reaction code)的編解碼系統架構。如第二圖所示,在編解碼系統架構200中,系統編碼器(systematic encoder)210根據一系列的非系統金鑰(non-system key)I0 ,I1 ,...及一系列的系統金鑰C0 ,C1 ,...,將k個輸入符元IS(0),IS(1),...,IS(K-1)編碼後,其輸出結果包含了原本的k個輸入符元IS(0),IS(1),...,IS(K-1)以及修正符元(repair symbol),記為B(I0 ),B(I1 ),B(I2),...。此文獻中未揭示有關可平行化的編碼運作。
有一篇專利文獻揭示了一種處理視訊資料的技術。如第三圖所示,此技術在發送端將同樣的視訊來源資料310藉由數個不同的佇列(queue)Q1~Qn同時給數組不同的FEC運算單元FEC1~FECn進行編碼,每一種FEC皆採用不同的錯誤恢復技術,之後再將結果合併輸出至一網路 320,而接收端從網路320收到資料後,依據封包內容送至專屬的FEC解碼單元進行解碼。
在猛禽碼或猛禽Q碼的編碼中,若是能夠縮短前處理的運算時間,將可大幅度地提升整體猛禽碼或猛禽Q碼的編碼速率。在上述的編碼與解碼的技術中,有的技術是針對加速單一區塊解碼的運算過程,使得在進行解碼運算時能夠有更好的效率;有的技術是多個發送裝置在同一時間針對同一區塊進行編碼動作,但各發送裝置之間並未對此編碼動作進行最佳化的協調;有的技術在視訊來源資料的發送端有平行化的運算單元,但每一單元所採用的FEC類型都不同,並未包含特定而平行化的加速機制。在編碼運算中,多重區塊之間的運算依然會有大量的運算資源被用來進行相同的運算。因此,如何能夠大幅度地縮短前處理的運算時間以提升整體猛禽碼的編碼速率是很重要的。
本揭露實施例可提供一種猛禽碼之編碼加速裝置與方法。
所揭露的一實施例是關於一種猛禽碼之編碼加速裝置。此編碼加速裝置可包含一前編碼矩陣產生裝置(precoding matrix generationdevice)、一前編碼運算序列儲存裝置(precoding OL storage device)、一前編碼運算序列產生裝置(precoding OL generation device)、以及至少一中間 符元快速產生裝置(prompt intermediate symbol generation device)。此前編碼運算序列儲存裝置儲存至少一運算序列、以及此至少一運算序列各自對應的區塊長度。此前編碼矩陣產生裝置配置來產生一輸入的區塊長度所對應的一編碼矩陣M並算出反矩陣M-1 ,或是令此前編碼運算序列儲存裝置輸出對應此輸入的區塊長度的一運算序列;此前編碼運算序列產生裝置根據編碼矩陣M或其反矩陣M-1 ,產生一新的運算序列(new OL)。此中間符元快速產生裝置根據此兩運算序列之一、以及輸入的至少一來源符元集合(source symbol set),產生至少一中間符元集合(intermediate symbol set)以提供給至少一噴泉碼編碼器(fountain code encoder)進行編碼。
所揭露的另一實施例是關於一種猛禽碼之編碼加速方法。此方法可包含:配置一前編碼運算序列儲存裝置,來儲存至少一運算序列、以及此至少一運算序列各自對應的區塊長度;當一輸入的區塊長度已儲存於此前編碼運算序列儲存裝置時,由此前編碼運算序列儲存裝置輸出對應此輸入的區塊長度的一已儲存的運算序列;當此輸入的區塊長度k未儲存於此前編碼運算序列儲存裝置時,算出一編碼矩陣M或其反矩陣M-1 後,由一前編碼運算序列產生裝置來產生一新的運算序列;以及利用一中間符元快速產生裝置,根據此兩運算序列的其中一運算序列、以及輸入的至少一來源符元序列,產生至少一中間符元集合以提供給至少一噴泉碼編碼器來進行編碼。
茲配合下列圖示、實施例之詳細說明及申請專利範圍,將上述及本發明之其他優點詳述於後。
猛禽碼或猛禽Q碼編碼的前處理運算主要是在進行解聯立方程組的運算,以產生中間符元。解聯立方程組的運算可用矩陣的方式來呈現,以下列的範例來說明, 其中,符號y 1 ...y 12 代表由來源資料所衍生的衍生輸入符元,y 1 ...y 10 的值均固定為0,y 11y 12 分別為來源符元(source symbol)SS0 及SS1 。也就是說,此範例中,由來源資料所形成的來源區塊(source block)的區塊長度(block length)k為2,此來源區塊僅包含SS0 及SS1 這兩個來源符元。等式左邊的矩陣是在猛禽碼或猛禽Q碼之編碼時所產生的編碼矩陣,而符號x 1 ...x 12 就是未知的中間符元。換句話說,欲求解中間符元x 1 ...x 12 可用下列X=M-1 .Y的關係式的方式來表示, 也就是說,以行向量Y表示由來源資料所衍生的衍生輸入符元,行向量X表示欲求解的中間符元,矩陣M表示猛禽碼或猛禽碼Q之編碼時所產生的編碼矩陣,則X=M-1 .Y的關係式成立。其中,由來源資料的k個來源符元,衍生出行向量Y的規則定義於猛禽碼或猛禽Q碼的標準中,即RFC-5053與RFC-6330。
在串流傳輸情境(streaming delivery scenario)下,一來源媒體串流(source media stream)400被分割成數個來源區塊(source block)。每一來源區塊內有一或多個符元,每一來源區塊內的來源符元(source symbol)的數量定義為此來源區塊的區塊長度(block length)。例如,第四圖的範例中,一來源媒體串流被分割成N個來源區塊,來源區塊3內有k個來源符元,標記為來源符元3_1至來源符元3_k,所以,來源區塊3的區塊長度為k。在猛禽碼或猛禽Q碼的 編碼時,當所使用的來源區塊的區塊長度相同時,所產生的編碼矩陣M也會相同。也就是說,編碼矩陣M只與來源區塊內的來源符元的數量有關。
在猛禽碼或猛禽Q碼編碼的第一階段(即前處理運算)中,編碼矩陣M是可以事先定義的,例如在猛禽碼的實作標準RFC 5053中,給定一編碼區塊的區塊長度,就可得到一相對應的編碼矩陣;同樣地,在猛禽Q碼(RaptorQ)的實作標準RFC-6330中,編碼矩陣M也可以事先定義的。由於在猛禽碼或猛禽Q碼編碼的步驟中,針對相同區塊長度的編碼區塊,所產生的編碼矩陣皆為相同,與輸入資料的內容無關。所以在實做猛禽碼或猛禽Q碼的過程中,當將被編碼的來源資料(source data)擁有相同的區塊長度時,其前處理運算會出現大量的重覆運算。
例如,在前處理運算產生編碼矩陣M的反矩陣M-1 時,會進行大量重覆的高斯消去法運算。因為整個高斯消去法運算最花時間的部份是搜尋M矩陣中哪一列(第R1 列)的權重(weight)最低、以及搜尋M矩陣中哪些列(第Ri 列)的第C行值為1。在此兩步驟中,都不需要輸入符元來參與運算,僅需要M矩陣即可進行。由於M矩陣的產生僅與區塊長度有關,且區塊長度一般不常變動,因此儘管輸入符元內的資料不同,此兩步驟幾乎都是在重複相同的運算。
編碼矩陣M通常都是很大階數(order)的矩陣。例如,以在高鐵列車內進行WiFi多播影音串流(multicast streaming)的平台來說,其所使用的來源區塊的區塊長度固定為4MB,即4096個1KB的來源符元(source symbol),也就是說,將來源資料進行多播影音串流時,所使用的單一來源區塊內所包含的符元數量k等於4096。在此例子中,編碼矩陣M及反矩陣M-1 的階數兩者皆為4248×4248。所以,前述求解中間符元所使用的反矩陣M-1 .Y是會耗費很大的計算量的。
猛禽碼或猛禽Q碼的編碼階段大部分時間是發生在高斯消去法的運算上。本揭露將高斯消去法中重複的運算次數變成僅做一次,記錄編碼所需的時間與資料產出速率,並且根據所推估之編碼的吞吐量(throughput)的統計值,例如吞吐量的最大值與增加值,發現所得到之編碼的吞吐量可增加到原先的兩倍以上,並且當區塊長度越大時,所增加的吞吐量也跟著越多。
所以,在猛禽碼或猛禽Q碼的編碼中,本揭露實施例調整前處理運算的架構,將具有相同區塊長度之資料的高斯消去法運算預先完成;並且導入運算序列(operation list)的使用來產生經過最佳化的運算序列。此運算序列的內容為執行前處理運算時,所需進行的XOR運算的執行順序。待後續的來源資料中有相同符元數量的來源區塊的資料要進行前處理運算時,即可直接使用先前已產生的運算 序列,以取代原本的反矩陣M-1 乘以衍生輸入符元Y的耗時運算,進而節省處理器的運算資源。
在產生中間符元的過程中,反矩陣M-1 與衍生輸入符元Y相乘的過程中有很多運算是可以省略的。矩陣乘法可以透過計算時的資料相依性進行最佳化,以減少矩陣乘法運算中所需要的XOR運算。如第五圖的範例所示,反矩陣M-1 是一個20×20矩陣,等式的右邊矩陣是中間符元所形成的矩陣,其反矩陣M-1 與衍生輸入符元Y相乘是一複雜的過程。但如第五圖所示,一個中間符元的產生過程可被化簡為由一或多個衍生輸入符元,經由XOR運算(即第五圖中的“+”運算)而產生。更進一步地說,產生中間符元所形成的矩陣的每一列(row)有可能是由其他的列與衍生輸入符元做XOR運算後所產生的,或是由其他的衍生輸入符元做XOR運算後所產生的,也可能是由計算其他列時的中間值(intermediate value)與衍生輸入符元做XOR運算後所產生的。例如,令Z=Yi,1 +Yi,2 +Yi,3 +Yi,4 +Yi,9 +Yi,10 為計算Xi,1 的中間值,則Xi,2 可由Z+Yi,5 +Yi,6 +Yi,15 +Yi,16 +Yi,17 +Yi,20 運算求得。所以,在大型矩陣的運算中,最佳化的運算序列(Operation List,OL)是需經過特殊的設計處理後才能產生的,也才能完成簡化的矩陣運算。本揭露實施例以一前編碼運算序列產生裝置(Precode Operation List Generator)來完成運算序列的最佳化設計,以加速猛禽碼或猛禽Q碼的編碼速度。
承上述,第六A圖是根據本揭露一實施例,說明一種編碼加速裝置,此編碼加速裝置可適用於猛禽碼的編碼,也可適用於猛禽Q碼的編碼。如第六圖所示,編碼加速裝置600可包含一前編碼運算產生裝置610、以及至少一中間符元快速產生裝置622。前編碼運算產生裝置610包括一前編碼矩陣產生裝置612、一前編碼運算序列儲存裝置614、以及一前編碼運算序列產生裝置616。基於運算序列猛禽編碼器620包括至少一中間符元快速產生裝置622。前編碼運算序列儲存裝置614儲存至少一運算序列、以及此至少一運算序列各自對應的區塊長度。
前編碼矩陣產生裝置612是配置來產生對應輸入的一區塊長度k的一編碼矩陣M並算出反矩陣M-1 ,或是令前編碼運算序列儲存裝置614輸出對應此區塊長度的一運算序列。例如,前編碼矩陣產生裝置612可令前編碼運算序列儲存裝置614輸出對應此區塊長度的一已儲存的運算序列(stored OL)614a至中間符元快速產生裝置622;或是根據區塊長度k產生一編碼矩陣M、以及算出反矩陣M-1 並輸出至前編碼運算序列產生裝置616。前編碼運算序列產生裝置616根據反矩陣M-1 ,產生一新的運算序列616a以提供給中間符元快速產生裝置622,並將此新的運算序列616a及區塊長度k儲存至前編碼運算序列儲存裝置614。前編碼運算序列儲存裝置614所儲存的每一運算序列的內容是進行一前編碼運算時所需進行的XOR運算的執行順序。
中間符元快速產生裝置622根據一收到的運算序列、以及輸入的至少一來源符元序列632,產生至少一中間符元集合622a以提供給至少一噴泉碼編碼器624進行編碼,產生出至少一已編碼的(encoded)符元集合624a。此收到的運算序列也就是新的運算序列616a或是已儲存的運算序列614a此兩運算序列的其中一運算序列。噴泉碼編碼器624例如是一LT(Luby Transform)編碼器。
根據本揭露另一實施例,編碼加速裝置600可包含前編碼運算產生裝置610、以及一基於運算序列猛禽編碼器(OL-based Raptor encoder)620。基於運算序列猛禽編碼器620包括此中間符元快速產生裝置622以及此至少一噴泉碼編碼器624,並且根據輸入的來源符元集合632與前編碼運算產生裝置610產生的一運算序列,將中間符元快速產生裝置622所產生的至少一中間符元集合622a經由此至少一噴泉碼編碼器624進行編碼後,產生出此至少一已編碼的符元集合624a。
前編碼運算序列產生裝置616也可採用不同的方式,來產生新的運算序列616a。第六B圖是根據本揭露一實施例,說明前編碼運算序列產生裝置產生新的運算序列的另一種方式。第六B圖與第六A圖不同的是,第六B圖中的前編碼運算序列產生裝置616可接收前編碼矩陣產生裝置612產生的編碼矩陣M,並執行一猛禽碼編碼階段的 一高斯消去法運算,並且在此高斯消去法運算結束時,產生一新的運算序列。也就是說,根據第六A圖第六B圖的實施例,編碼加速裝置600中的前編碼運算序列產生裝置可根據編碼矩陣M或其反矩陣M-1 ,來產生一新的運算序列。
在第六B圖的實施例中,在此高斯消去法運算的過程中,前編碼運算序列產生裝置616會透過紀錄對M矩陣的列所進行的一系列的XOR運算及排列(permutation)運算的一流程順序,在此高斯消去法運算結束時,產生此新的運算序列。由於前述的高斯消去法運算過程中,其進行的XOR運算可能會在所有的排列運算之前,所以前述的一系列的XOR運算及排列運算可以是一系列的XOR運算再加上一系列的排列運算。
在第六A圖或第六B圖之編碼加速裝置的架構中,對於一系列的來源符元集合也可安排成平行輸入,並搭配平行化的中間符元快速產生裝置622與平行化的噴泉碼編碼器624,來進行猛禽碼或猛禽Q碼的編碼,如此,猛禽碼或猛禽Q碼的編碼可達到平行化的最佳化運算,而可加速其編碼的流程。第七圖是根據本揭露一實施例,說明以平行化架構來實現的編碼加速裝置。
如第七圖的實施例所示,前編碼運算產生裝置610所產生的運算序列是以一平行化的方式,同時提供給第一至 第n中間符元快速產生裝置來進行運算。在一系列的來源符元集合SS中的所有來源符元序列(即來源符元序列SSj ,SSn+j ,...且j=1,...,n)中,這些序列SSj ,SSn+j ,...平行輸入於各自的第j中間符元快速產生裝置以產生各自的第j中間符元序列IMSj ,IMSn+j ,...,並輸出至各自的第j噴泉碼編碼器,j等於1至n。換句話說,n個來源符元序列SS1 ,SSn+1 ,...~SSn ,SSn+n ,...平行輸入於第一至第n中間符元快速產生裝置以平行產生出n個中間符元序列IMS1 ,IMSn+1 ,...~IMSn ,IMSn+n ,...,再平行輸出至第一至第n噴泉碼編碼器以平行產生出n個已編碼的符元序列ES1 ,ESn+1 ,...~ESn ,ESn+n ,...。
依此,第七圖中的編碼加速裝置是以一平行化的硬體架構來實現,其中至少一中間符元快速產生裝置622是多個中間符元快速產生裝置,至少一噴泉碼編碼器624是多個噴泉碼編碼器。此編碼加速裝置將一系列的來源符元集合安排成平行輸入於此多個中間符元快速產生裝置,以平行產生多個中間符元序列,再平行輸出至此多個噴泉碼編碼器來進行編碼。類似地,此編碼加速裝置也可包含前編碼運算產生裝置610、以及由多個中間符元快速產生裝置與多個噴泉碼編碼器組成的一基於運算序列猛禽碼或猛禽Q碼編碼器。此基於運算序列猛禽編碼器根據輸入的一系列的來源符元集合與前編碼運算產生裝置610產生的一運算序列,將此多個中間符元快速產生裝置平行產生的多個中間符元集合經由此多個噴泉碼編碼器624進行編碼 後,平行輸出多個已編碼的符元集合。
第八圖是根據本揭露一實施例,進一步說明前編碼矩陣產生裝置612的運作。如第八圖所示,前編碼矩陣產生裝置612可藉由詢問前編碼運算序列儲存裝置614來判斷目前所收到的區塊長度k的值是否與前編碼運算序列儲存裝置614內所儲存的區塊長度的值有一匹配者,如標號812所示。換句話說,當前編碼運算序列儲存裝置614內已存在此區塊長度k時,前編碼矩陣產生裝置612讓前編碼運算序列儲存裝置614直接輸出對應此區塊長度的運算序列614a;當不存在此區塊長度k時,則根據收到的K值與相關參數重新產生矩陣M,並計算其反矩陣M-1 及輸出M-1 至前編碼運算序列產生裝置616。
承上述,第九圖是根據本揭露一實施例,說明一種猛禽碼之編碼加速方法。如第九圖所示,此編碼加速方法儲存至少一運算序列、以及各運算序列各自對應的區塊長度於一前編碼運算序列儲存裝置,如步驟910所示;當輸入的一區塊長度k已儲存於此前編馬運算序列儲存裝置時,由此前編碼運算序列儲存裝置輸出對應此區塊長度的一已儲存的運算序列,如步驟920所示;當輸入的此區塊長度k未儲存於此前編碼運算序列儲存裝置時,算出一編碼矩陣M或其反矩陣M-1 後,由一前編碼運算序列產生裝置來產生一新的運算序列,如步驟930所示;再利用至少一中間符元快速產生裝置,根據此兩運算序列的其中一運算序列、 以及輸入的至少一來源符元序列,產生至少一中間符元集合以提供給至少一噴泉碼編碼器來進行編碼,如步驟940所示。此區塊長度k以及新的運算序列被儲存至此前編碼運算序列儲存裝置。
此編碼加速方法也可以如前述所載,可由此前編碼運算序列產生裝置根據反矩陣M-1 ,產生一新的運算序列。也可算出編碼矩陣M後,由前編碼運算序列產生裝置執行一猛禽碼編碼階段的一高斯消去法運算,並且在此高斯消去法運算結束時,可產生一新的運算序列。在此高斯消去法運算的過程中,可透過紀錄對M矩陣的列所進行的一系列的XOR運算及排列運算的一流程順序,在此高斯消去法運算結束時,產生此新的運算序列。前述的一系列的XOR運算及排列運算可以是一系列的XOR運算再加上一系列的排列運算。
上述編碼加速方法如前述所載,也可以採用一平行化的方式,將前編碼運算序列產生裝置所產生的運算序列同時提供給多個中間符元快速產生裝置來進行運算;也可以將一系列的來源符元集合安排成平行輸入於此多個中間符元快速產生裝置,以平行產生多個中間符元序列,再平行輸出至多個噴泉碼編碼器來進行編碼。
如前述所載,反矩陣M-1 與衍生輸入符元Y相乘是一複雜的過程。所以,本揭露編碼加速技術的實施例預計將 相同來源區塊長度k的高斯消去法運算預先完成,並由一前編碼運算序列產生裝置來產生經過最佳化的運算序列,其內容為前編碼運算時,所需進行的XOR運算的進行順序。當後續的來源區塊長度k相同並且此來源區塊要進行前編碼運算時,可直接使用先前產生的運算序列,以取代原本的M-1 乘以衍生輸入符元Y的過程。以下第十圖之前編碼運算序列產生裝置的範例示意圖先說明來源符元與中間符元的關係後,第十一圖與第十二圖分別提供兩種產生最佳化的運算序列的實施例,但不以此為限。
如第十圖的範例所示,根據輸入的反矩陣M-1 ,前編碼運算序列產生裝置產生一運算序列(OL),其中,令p為一正整數,一來源符元集合p以符號SSp 表示,一中間符元集合p以符號IMSp 表示,來源符元集合p的元素為k個來源符元(即SSp,1 ,SSp,2 ,...,SSp,k ),中間符元集合p的元素為L個中間符元(即IMSP,1 、IMSP,2 、...、IMSP,L )。一衍生輸入符元集合p以符號Yp 表示,衍生輸入符元集合p的元素為L個衍生輸入符元(即YP,1 、YP,2 、...、YP,L ),其中,YP,1 至YP,L-k 的L-k個衍生輸入符元為0,YP,L-k+1 至YP,L 的k個衍生輸入符元依序為SSp,1 ,SSp,2 ,...,SSp,k 。如第十圖所示,中間符元集合p裡的中間符元與衍生輸入符元集合p裡的衍生輸入符元可用一關係式IMSp =M-1 ×Yp 來表示。
如之前所述,每一運算序列的內容是進行一前編碼運 算時所需進行的XOR運算的執行順序,以下以一實施例說明一運算序列的資料結構後,再說明產生最佳化之運算序列的流程一實施例。一運算序列的資料結構是由運算(operator)、目標(target)、以及一或多個來源集合(source sets)所形成的一串列,即OL=[運算 目標{一或多個來源集合}],[運算 目標{一或多個來源集合}],...。當執行前編碼運算時,將依照每一串列內成員的順序來依序運算,一運算序列OL內的每一成員是一個一維陣列,分別標示各中間符元該如何求出。
中間符元快速產生裝置622欲產生之至少一中間符元集合中的中間符元所需的運算有兩種選擇,其中一種選擇是XOR運算,另一種選擇是原始(Original)運算。選擇XOR運算時,將後續{來源集合}中所代表的符元全部XOR起來,就是所需的值。選擇Original運算,此時{來源集合}為空集合,所需的結果是由原始反矩陣M-1 中相對應的列向量與衍生來源符元集合構成的矩陣,兩者進行矩陣乘法運算後求得。目標是欲求解之中間符元的編號,其範圍是從0到L-1,或是從1到L。{來源集合}是選擇XOR運算時,所需的來源資料集合,此集合內容可能是衍生來源符元的編號,或者是已經求出之中間符元的編號。以下以一運算序列為例,說明根據此運算序列如何進行XOR運算的執行順序。
例如,運算序列OL=[XOR 19{Y(2),Y(8)}],[XOR 9 {IMS(19),Y(22)}],[XOR 517{IMS(9),Y(551),Y(792)}],[XOR 457{IMS(19),IMS(517),Y(84),Y(347)}],...。則根據此運算序列OL,在步驟1中,[XOR 19{Y(2),Y(8)}]代表第19個中間符元可由第2個衍生輸入符元和第8個衍生輸入符元進行XOR組合來算出其值;在步驟2中,[XOR 9{IMS(19),Y(22)}}]代表第9個中間符元可由第19個中間符元(已於步驟1中算出)和第22個衍生輸入符元進行XOR組合來算出其值;在步驟3中,[XOR 517{IMS(9),Y(551),Y(792)}]代表第517個中間符元可由第9個中間符元(已於步驟2中算出)、第551個衍生輸入符元、以及第792個衍生輸入符元進行XOR組合來算出其值;在步驟4中,[XOR 457{IMS(19),IMS(517),Y(84),Y(347)}]代表第457個中間符元可由第19個中間符元(已於步驟1中算出)、第517個中間符元(已於步驟3中算出)、第84個衍生輸入符元和第347個衍生輸入符元進行XOR組合來算出其值;依此類推,在步驟5中,進行此運算序列中的下一元素[運算 目標{一或多個來源集合}]的XOR運算或Original運算,…等。
第十一圖是根據本揭露一實施例,說明產生運算序列的流程,其中搜尋範圍為一預定的正整數n。n的大小關係到此流程的運算時間以及產出之運算序列所能提升的運作速率。參考第十一圖的運作流程,首先,產生兩集合S1 與S2 ,並且令運算序列為一空集合以及m=1,如步驟1110所示。集合S1 可來自衍生輸入符元集合p,即集合 S1 =Yp ={Yp,1 ,Yp,2 ,…,Yp,L-1 ,Yp,L }={0,…,0,SSp,1 ,SSp,2 ,…,SSp,k },其中SSp,1 之前的0的數目為L-k個。集合S2 可來自中間符元集合p,即集合S2 ={IMSp,1 ,IMSp,2 ,…,IMSp,L },運算序列OL為一空集合可表示為NULL,即OL=NULL。然後,將集合S2 中可由集合S1 中的任一元素Yp,i ,i=1,…,L,所組成的中間符元加到運算序列OL與集合S1 中,如步驟1120所示。也就是說,對於集合S2 中的所有元素IMSp,i ,若IMSp,i =Yp,j S1 ,則S2 =S2 -{IMSp,i },並且串接一個成員於運算序列OL的尾端,即[XOR(p,i){Y(p,j)}]。換句話說,中間符元集合p中之第i個中間符元的值是衍生輸入符元集合p中的第j個衍生輸入符元。
繼步驟1120之後,將m值加1,對於集合S2 中的所有元素IMSp,i ,若IMSp,i 可由集合S1 中的任m個元素(以v1 ~vm 表示)進行XOR運算來完成,且m為小於n的正整數,則集合S1 =S1 ∪{IMSp,i },集合S2 =S2 -{IMSp,i },於OL尾端串接一個成員,即[XOR(p,i){v1 ,…,vm }]。也就是說,將集合S2 中可由集合S1 中的任意m個元素所組成的中間符元加到運算序列OL與集合S1 中,如步驟1130所示。然後,將m值加1,並且重複步驟1130,如步驟1140所示,直到m大於等於n為止。
也就是說,步驟1120至步驟1140的動作為,將集合S2 中可由集合S1 中的任m個元素所組成的中間符元加到 該新的運算序列與集合S1 中,此正整數m的值從1開始,並且每次增加1及重複前述步驟直到m的值小於一預定的正整數n為止。最後,將集合S2 中剩餘的元素加到運算序列OL中,如步驟1150所示。
參考第十二圖之產生運算序列的流程的另一實施例,首先,利用輸入的反矩陣M-1 ,將中間符元依照中間符元之間的相依性i來分群,如步驟1210所示。此相依性i例如可用數個連續的正整數來表示相依性的等級,例如,以一矩陣D來記錄反矩陣M-1 內的每一列分別與其它列的漢明距離(hamming distance),其中矩陣D[x,y]表示矩陣M-1 之第x列和第y列的漢明距離。從相依性i為1(最小的相依性)的每一群中皆選出產出方法最精簡的中間符元加到運算序列OL中,並且將群中剩餘的中間符元依據組成的相依性加到運算序列OL中,如步驟1220所示。其中,產出方法最精簡的中間符元例如是以最少的XOR運算次數來產生運算序列OL所要產生的中間符元。以一範例來說明,假設產出方法最精簡的中間符元為w,而群中剩餘的中間符元有a、b、c,且D[w,a]=i、D[a,b]=i、以及D[b,c]=i,則a與w有相依性、b與a有相依性、c與b有相依性。所以,此中間符元為w被加到運算序列OL後,將群中剩餘的中間符元a、b、c(例如,依a、b、c的順序)加到運算序列OL中,例如將一成員,記為[XOR x{IMS(w),Y(x_w_1),Y(x_w_2),…,Y(x_w_i)}],加到運算序列OL中。
在步驟1210中,例如可先建立一個二維陣列S,陣列S的每一元素皆是一個集合;然後根據矩陣D來建立陣列S的內容。以陣列S的一元素S[1][5]為例來說明,S[1][5]表示與反矩陣M-1 之第5列的漢明距離為1的列編號的集合;並建立一個一維陣列A,陣列A的每一元素的初始值皆是一個空集合。將陣列S的每一元素的資料進行整合,整合方式為,當某個中間符元n位於一元素S[i][j]的集合中,則S[i][j]=S[i][j]∪S[i][n],S[i][n]={}。
當元素S[1][j]不是空集合時,從元素S[1][j]中取出一中間符號r,使得對S[1][j]中所有的成員p,反矩陣M-1 的第r列的漢明權重皆不大於矩陣M-1 的第p列的漢明權重。然後,串接一個成員於運算序列OL的尾端,即[Original r{}]。此Original r{}代表中間符元IMS(r)不做任何最佳化的動作即直接加入到運算序列OL中,也就是只採用原始的一個或數個衍生來源符元Y來組成IMS(r)。
接著,對對S[1][j]中所有的成員p,串接一個成員於運算序列OL的尾端,即[XOR p{IMS(k),SS(q)}],並且清空S[i][j]集合的內容。此q表示反矩陣M-1 的第k列和反矩陣M-1 的第p列的相異點是在第q行。挑選下一個元素S[1][r]且S[1][r]不是空集合,並進行前述步驟的運算,直到所有的元素S[1][r]皆為空集合為止。
在步驟1230中,檢查相依性為i的每一群中是否可根 據運算序列OL中的成員選出相依性小於i的中間符元。例如,對所有先前並未新增到運算序列OL中的中間符元t,試圖找到某個已新增到運算序列OL中之中間符元s,且與t的漢明距離v不大於相依性i。若有超過一個以上的中間符元s可以滿足上述條件,僅選擇能讓v值最小的中間符元s,則令運算序列OL=OL,[XOR t{IMS(s),Y(q1 ),Y(q2 ),...}],其中q1 ,q2 ,...為反矩陣M-1 中第t列和第s列之差異點所在的行號。也就是,將所有符合前述條件之中間符元t為目標的新成員加入到運算序列OL的尾端。
當相依性為i的每一群中可根據運算序列OL中的成員選出相依性小於i的中間符元時,從上述步驟1230產生的中間符元中,選出相依性小於i的每一群中產出方法最精簡的中間符元加到運算序列OL中,並且將群中剩餘的中間符元依據組成的相依性加到運算序列OL中,如步驟1240所示。當相依性為i的每一群中不能根據運算序列OL中的成員選出相依性小於i的中間符元時,選出相依性為i的每一群中產出方法最精簡的中間符元加到運算序列OL中,並且將群中剩餘的中間符元依據組成的相依性加到運算序列OL中,如步驟1250所示。
當相依性為i的值小於一預定的搜尋範圍n時,返回步驟1230;當相依性i的值大於等於此預定的搜尋範圍n時,將所有剩餘的中間符元加到運算序列OL中,如步驟 1260所示。例如,對所有尚未新增到運算序列OL之中間符元的指標值u,串接一個成員於運算序列OL的尾端,即[Original u{}]。
總言之,在第十二圖之產生運算序列的實施例中,首先利用輸入的反矩陣M-1 ,將中間符元依照相依性i來分群,並找出相依性(如漢明距離)最小的中間符元,放入已知如何產生的中間符元的集合P中。之後再比較未知如何產生的中間符元的集合Q與已知如何產生的中間符元的集合P,以判斷集合Q中是否有中間符元與集合P中的中間符元的相依性為i,i的範圍是從1到n,上述的搜尋由相依性i等於1開始向上遞增。
以下舉出兩個範例分別說明根據第十一圖與第十二圖之產生運算序列的各步驟以及其運算結果。第十三A圖至第十三F圖是根據本揭露一實施例,以一範例來說明第十一圖之產生運算序列的各步驟以及其運算結果。第十三A圖(即步驟1110)中,輸入資料有輸入符元(以Ms1 表示)、以及反矩陣M-1 ,初始化集合S1 以及集合S2 ,其中,集合S1 來自衍生輸入符元集合p,即集合S1 =Yp ={Yp,1 ,Yp,2 ,Yp,3 ,Yp,4 ,Yp,5 },集合S2 來自中間符元集合p,即集合S2 ={IMSp,1 ,IMSp,2 ,IMSp,3 ,IMSp,4 ,IMSp,5 },運算序列OL為一空集合NULL,即OL=NULL。假定搜尋範圍為3,然後開始根據步驟1120至步驟1140來進行搜尋集合S2 中的中間符元是否有可由集合S1 中的元素Yp,i ,i=1,…,5,所組成的。
當搜尋範圍的指標為1時,搜尋到yp,2 S1且yp,2 =[0 1 0 0 0]=IMSp,4 ,因此,把IMSp,4從集合S2移到集合S1,如第十三B圖中所示,此時集合S1中加入IMSp,4 ,而從集合S2中移除IMSp,4 ;並且在運算序列OL後方串接一成員[XOR(p,4){y(p,2)}],表示IMSp,4是由yp,2 所組成,所以,運算序列OL如下:OL=[XOR(p ,4){y(p ,2)}]。此時搜尋範圍的指標為1已全部搜尋完畢,並且S1={yp,1 ,yp,2 ,yp,3 ,yp,4 ,yp,5 ,IMSp,4 },S2={IMSp,1 ,IMSp,2 ,IMSp,3 ,IMSp,5 },OL=[XOR(p,4){y(p,2)}]。下一步驟將從搜尋範圍的指標為2開始。
當搜尋範圍的指標為2時,搜尋到yp,3 ,yp,4 S 1且yp,3 ♁yp,4 =[0 0 1 0 0]♁[0 0 0 1 0]=[0 0 1 1 0]=IMSp,2 ,因此,把IMSp,2 從集合S2移到集合S1,如第十三C圖中所示,此時集合S1中加入IMSp,2 ,而從集合S2中移除IMSp,2 ,故S1={yp,1 ,yp,2 ,yp,3 ,yp,4 ,yp,5 ,IMSp,4 ,IMSp,2 },S2={IMSp,1 ,IMSp,3 ,IMSp,5 };並且在運算序列OL後方串接一成員[XOR(p,2){y(p,3),y(p,4)}],表示IMSp,2 可由yp,3 ,yp,4 進行XOR運作求得。所以,運算序列OL如下:OL=[XOR(p,4){y(p,2)}],[XOR(p,2){y(p,3),y(p,4)}]。
然後,又搜尋到yp,1 ,IMSp,2 S 1且yp,1 ♁IMSp,2 =[1 0 0 0 0]♁[0 0 1 1 0]=[1 0 1 1 0]=IMSp,3 ,因此,把IMSp,3 從集合S2移到集合S1,如第十三D圖中所示,故S1={yp,1 ,yp,2 ,yp,3 ,yp,4 ,yp,5 ,IMSp,4 ,IMSp,2 ,IMSp,3 },S2={IMSp,1 ,IMSp,5 };並且在運算序列OL後方串接一成員[XOR(p,3){y(p,1),IMS(p,4)}],表示IMSp,3 可由yp,1 與IMSp,3 進行XOR運作求得,所以,運算序列OL如下:OL=[XOR(p,4){y(p,2)}],[XOR(p,2){y(p,3),y(p,4)}],[XOR(p,3){y(p,1),IMS(p,2)}]。此時搜尋範圍的指標為2已全部搜尋完畢,並且S1={yp,1 ,yp,2 ,yp,3 ,yp,4 ,yp,5 ,IMSp,4 ,IMSp,2 ,IMSp,3 },S2={IMSp,1 ,IMSp,5 },OL=[XOR(p,4){y(p,2)}],[XOR(p,2){y(p,3),y(p,4)}],[XOR(p,3){y(p,1),IMS(p,2)}]。下一步驟將從搜尋範圍的指標為3開始。
當搜尋範圍的指標為3時,搜尋到yp,1 ,yp,2 ,yp,4 S 1且yp,1 ♁yp,2 ♁yp,4 =[1 0 0 0 0]♁[0 1 0 0 0]♁[0 0 0 1 0]=[1 1 0 1 0]=IMSp,1 ,因此,把IMSp,1 從集合S2移到集合S1,如第十三E圖中所示,故S1={yp,1 ,yp,2 ,yp,3 ,yp,4 ,yp,5 ,IMSp,4 ,IMSp,2 ,IMSp,3 ,IMSp,1 },S2={IMSp,5 };並且在運算序列OL後方串接一成員[XOR(p,1){y(p,1),y(p,2),y(p,4)}]表示IMSp,1 可由yp,1 ,yp,2 ,yp,4 與IMSp,1 進行XOR運作求得,所以,運算序列OL如下:OL=[XOR(p,4){y(p,2)}],[XOR(p,2){y(p,3),y(p,4)}],[XOR(p,3){y(p,1),IMS(p,2)}],[XOR(p,1){y(p,1),y(p,2),y(p,4)}]。此時搜尋範圍的指標為3已全部搜尋完畢,達到迴圈終止 條件。
當迴圈終止時,集合S2中僅剩IMSp,5 ,根據步驟1150進行,把IMSp,5 從集合S2移到集合S1,如第十三F圖中所示,故S1={yp,1 ,yp,2 ,yp,3 ,yp,4 ,yp,5 ,IMSp,4 ,IMSp,2 ,IMSp,3 ,IMSp,1 ,IMSp,5 },S2={};並且在運算序列OL的後方串接一成員[Origin(p,5){}],表示IMSp,5 無進行最佳化,是採用原本的組合方式。所以,最後求得的運算序列OL如下:OL=[XOR(p,4){y(p,2)}],[XOR(p,2){y(p,3),y(p,4)}],[XOR(p,3){y(p,1),IMS(p,2)}],[XOR(p,1){y(p,1),y(p,2),y(p,4)}],[Origin(p,5){}]。
第十四圖是根據本揭露一實施例,以一範例來說明第十二圖之產生運算序列的各步驟以及其運算結果。其中,輸入資料與初始假設與第十三圖的範例相同,即,輸入符元(以Ms1 表示)、以及反矩陣M-1 ,集合Ms1 =Yp ={Yp,1 ,Yp,2 ,Yp,3 ,Yp,4 ,Yp,5 },集合Ms2 來自中間符元集合p且集合Ms2 =M-1 ={IMSp,1 ,IMSp,2 ,IMSp,3 ,IMSp,4 ,IMSp,5 },運算序列OL=NULL。假定搜尋範圍為3,然後開始根據步驟1210,依據M-1 中各列的相依性i做分群,此例子中,先建立一個二維陣列S,陣列S的每一元素S[i][j]皆是一個集合,1≦i,j≦5;然後根據前述的矩陣D來建立陣列S的內容,第十四A圖中,列出初始化步驟1210之後,此陣列S之每一元素S[i][j]的內容,如箭頭1410所指。以S[3][2]={1,4} 做說明,此等式表示M-1 中和第二列的漢明距離為3的列是第一列和第四列。然後,下一步驟為,將陣列S的每一元素S[i][j]的資料進行整合。
整合方式如之前所述,當某個中間符元n位於一元素S[i][j]的集合中,則S[i][j]=S[i][j]∪S[i][n],S[i][n]={},如第十四B圖的七項說明,即分別如標號1421至標號1427所示。
如標號1421中所述,因為3S[1][2],所以將S[1][3]合併到S[1][2]中,並清空S[1][3];所以S[1][2]=S[1][2]∪S[1][3]={2,3},S[1][3]={}。如標號1422中所述,因為3S[2][1]以及4S[2][1],所以將S[2][3]及S[2][4]合併到S[2][1]中,並清空S[2][3]及S[2][4],所以S[2][1]=S[2][1]∪S[2][3]∪S[2][4]={1,3,4},S[2][3]=S[2][4]={}。如標號1423中所述,因為2S[3][1],所以將S[3][2]合併到S[3][1]中,並清空S[3][2],所以S[3][1]=S[3][1]∪S[3][2]={1,2,4,5},S[3][2]={}。如標號1424中所述,因為5S[3][1],所以將S[3][5]合併到S[3][1]中,並清空S[3][5],所以S[3][1]=S[3][1]∪S[3][5]={1,2,3,4,5},S[3][5]={}。如標號1425中所述,因為3S[3][1]以及4S[3][1],所以將S[3][3]及S[3][4]合併到S[3][1]中,並清空S[3][3]及S[3][4],所以S[3][1]=S[3][1]∪S[3][3]∪S[3][4]={1,2,3,4,5},S[3][3]=S[3][4]={}。如標號1426中所述,因為5S[4][2],所以將S[4][5]合併到S[4][2]中,並 清空S[4][5],所以S[4][2]=S[4][2]∪S[4][5]={2,5},S[4][5]={}。如標號1427中所述,因為4S[4][3],所以將S[4][4]合併到S[4][3]之中,並清空S[4][4],所以S[4][3]=S[4][3]∪S[4][4]={3,4},S[4][4。
整合陣列S的每一元素S[i][j]的資料後,下一步驟為根據步驟1220,從相依性i為1(最小的相依性)的每一群中皆選出產出方法最精簡的中間符元加到運算序列OL中,並且將群中剩餘的中間符元依據組成的相依性加到運算序列OL中。整合後的陣列S中,相依性為1的非空集合為S[1][2]={2,3},所以,如第十四C圖的兩項說明,分別如標號1431及標號1432所示。如標號1431所述,IMSp,2 的漢明權重為2,IMSp,3 的漢明權重為3;因為IMSp,2 的漢明權重較小,所以在運算序列OL的後方串接一成員[Original(p,2){}],即OL=[Original(p,2){}]。如標號1432所述,S[1][2]中的剩餘成員為3,且IMSp,3 =IMSp,2 ♁yp,1 ,所以在運算序列OL的後方串接一成員[XOR(p,3){IMS(p,2),y(p,1)}],即OL=[(Original(p,2){}],[XOR(p,3){IMS(p,2),y(p,1)}]。此時搜尋範圍的指標(即相依性)為1的集合皆處理完畢,下一步驟由相依性為2開始。
當搜尋範圍的指標(即相依性)為2時,相依性為2的非空集合為S[2][1]={3},且IMSp,3 已加入到運算序列OL中。所以,如第十四D圖的說明,S[2][1]中,尚未加到OL中的成員有1及4。因為IMSp,1 =IMSp,3 ♁yp,2 ♁yp,3 且 IMSp,4 =IMSp,1 ♁yp,1 ♁yp,4 ,所以在運算序列OL的後方依序串接兩成員,分別為[XOR(p,1){IMS(p,3),y(p,2),y(p,3)}]、及[XOR(p,4){IMS(p,1),y(p,1),y(p,4)}]。所以運算序列OL=[Original(p,2){}],[XOR(p,3){IMS(p,2),y(p,1)}],[XOR(p,1){IMS(p,3),y(p,2),y(p,3)}],[XOR(p,4){IMS(p,1),y(p,1),y(p,4)}]。此時搜尋範圍的指標(即相依性)為2的集合皆處理完畢,下一步驟由相依性為3開始。
當搜尋範圍的指標(即相依性)為3時,相依性為3的非空集合為S[3][1]={1},且IMSp,1 已加入到運算序列OL中。所以,如第十四E圖的說明,S [3][1]中,尚未加到OL中的成員有5。因為IMSp,5 =IMSp,1 ♁yp,3 ♁ yp,4 ♁yp,5 ,所以在運算序列OL的後方串接一成員[XOR(p,5){IMS(p,1),y(p,3),y(p,4),y(p,5)}]。此時搜尋範圍的指標(即相依性)為3的集合皆處理完畢,且所有IMS皆已加到運算序列OL中。所以,最後求得的運算序列OL如下:OL=[Original(p,2){}],[XOR(p,3){IMS(p,2),y(p,1)}],[XOR(p,1){IMS(p,3),y(p,2),y(p,3)}],[XOR(p,4){IMS(p,1),y(p,1),y(p,4)}],[XOR(p,5){IMS(p,1),y(p,3),y(p,4),y(p,5)}]。
第十五圖與第十六圖是分別根據第六圖與第七圖之實施例的應用情境的範例。如第十五圖的範例所示,在實際的應用情境下,可先透過一個輸入符元產生器(input symbol generator)1510來產生區塊長度k與一系列的來源符元集合SS,並將區塊長度k輸入於前編碼運算產生裝置610中的前編碼運算序列產生裝置616以及將一系列的來源符元集合SS輸入於基於運算序列猛禽編碼器620的中間符元快速產生裝置622,以產生多個中間符元序列,再輸出至噴泉碼編碼器624來進行編碼。或是如第十六圖的範例所示,此輸入符元產生器(input symbol generator)1510可將區塊長度k輸入於前編碼運算產生裝置610中的運算序列產生裝置616以及將一系列的來源符元集合SS平行輸入於基於運算序列猛禽編碼器620的n個中間符元快速產生裝置,以平行產生多個中間符元序列,再平行輸出至多個噴泉碼編碼器來進行編碼。
輸入符元產生器1510可連接於一編碼端的一輸入檔(input file)1512或是一輸入檔串流(input file stream)1514,此編碼端的一輸入檔1512或是此輸入檔串流是編碼資料的來源之一,可以是靜態檔案的型態。輸入符元產生器1510可依據預定參數,將收到的原始未編碼資料切割成所需之一或多個輸入符元集合,以利後續編碼處理。每一基於運算序列猛禽編碼器可包括一中間符元快速產生裝置以及一噴泉碼編碼器624。傳輸模組(transmit module)1520將基於運算序列猛禽編碼器產生的已編碼的符元集合包裝成網路封包型態並經由一通道(channel)傳送至一接收模組(receive module)1530後,由接收模組1530轉換成接收到的已編碼符元集合ES’,以利後續之猛禽碼解碼器 (Raptor decoder)1540的解碼運作。解碼後的來源符元集合SS再傳送給一輸入符元重建模組(input symbol reconstruct module)1550,以將解碼後的一個或多個輸入符元集合合併成原始的檔案型態。解碼後的原始檔案可存放於一解碼端的輸入檔1560。
在多數的應用環境中,區塊長度K值的變動次數是很稀少的,所以根據上述本揭露實施例,針對相同K值的連續輸入符元集合,可分別將之分配給多個中間符元快速產生裝置,以平行產生多個中間符元序列,再平行輸出至各自相對應的噴泉碼編碼器進行編碼,以產生最終的已編碼的符元集合,如此即可平行化的進行編碼作業,以加速編碼運算速度。根據上述第八圖的前編碼矩陣產生裝置的運作,本揭露實施例也可支援可變的區塊長度。不同K值所對應的多個運算序列也可分別被儲存於前編碼運算序列儲存裝置中。當輸入相同的區塊長度K值時,就不必再重新計算運算序列。
綜上所述,本揭露實施例提供一種猛禽碼之編碼加速的裝置與方法。其技術藉由改善前編碼運算的架構,將具有相同來源區塊長度之資料的高斯消去法運算預先完成,以及設計最佳化的運算序列來取代反矩陣M-1 與輸入符元Y相乘之複雜的運算過程,將反矩陣M-1 與輸入符元Y相乘的運算過程進行運算最佳化的處理,轉換成運算次數較少的運算序列,來達到猛禽碼或猛禽Q碼編碼的可平 行化與最佳化運算,因而可加速猛禽碼或猛禽Q碼編碼的流程。
以上所述者僅為本揭露實施例,當不能依此限定本揭露實施之範圍。即大凡本發明申請專利範圍所作之均等變化與修飾,皆應仍屬本發明專利涵蓋之範圍。
110‧‧‧前處理運算
120‧‧‧LT編碼運算
130‧‧‧中間符元
200‧‧‧編解碼系統架構
210‧‧‧系統編碼器
IS(0),IS(1),...,IS(K-1)‧‧‧輸入符元
B(I0 ),B(I1 ),B(I2 )...‧‧‧修正符元
310‧‧‧視訊來源資料
320‧‧‧網路
FEC1~FECn‧‧‧不同的FEC運算單元
400‧‧‧來源媒體串流
+XOR‧‧‧運算
600‧‧‧編碼加速裝置
610‧‧‧前編碼運算產生裝置
612‧‧‧前編碼矩陣產生裝置
614‧‧‧前編碼運算序列儲存裝置
616‧‧‧運算序列產生裝置
620‧‧‧基於運算序列猛禽編碼器
622‧‧‧中間符元快速產生裝置
624‧‧‧噴泉碼編碼器
614a‧‧‧已儲存的運算序列
k‧‧‧區塊長度
616a‧‧‧新的運算序列
622a‧‧‧中間符元集合
624a‧‧‧已編碼的符元集合
632‧‧‧來源符元集合
M‧‧‧編碼矩陣
M-1 ‧‧‧反矩陣
SS‧‧‧一系列的來源符元集合
SS1 ,SSn+1 ,...~SSn ,SSn+n ,...‧‧‧n個來源符元序列
IMS1 ,IMSn+1 ,...~IMSn ,IMSn+n ,...‧‧‧n個中間符元序列
ES1 ,ESn+1 ,...~ESn ,ESn+n ,...‧‧‧n個已編碼的符元序列
812‧‧‧判斷目前所收到的區塊長度k的值是否與前編碼運算序列儲存裝置內所儲存的區塊長度的值有匹配者
910‧‧‧儲存至少一運算序列、以及各運算序列各自對應的區塊長度於一前編碼運算序列儲存裝置
920‧‧‧當一輸入的區塊長度k已儲存於此前編碼運算序列儲存裝置時,由此前編碼運算序列儲存裝置輸出對應此輸入的區塊長度的一已儲存的運算序列
930‧‧‧當此輸入的區塊長度k未儲存於此前編碼運算序列儲存裝置時,算出一編碼矩陣M或其反矩陣M-1 後,由一前編碼運算序列產生裝置來產生一新的運算序列
940‧‧‧利用至少一中間符元快速產生裝置,根據此兩運算序列的其中一運算序列、以及輸入的至少一來源符元序列,產生至少一中間符元集合以提供給至少一噴泉碼編碼器來進行編碼
1110‧‧‧產生兩集合S1 與S2 ,並且令運算序列為一空集合以及m=1
1120‧‧‧將集合S2 中可由集合S1 中的任一元素所組成的中間符元加到運算序列OL與集合S1
1130‧‧‧將集合S2 中可由集合S1 中的任m個元素所組成的中間符元加到運算序列OL與集合S1 中,其中m為小於n的正整數
1140‧‧‧將m值加1,並且重複步驟1130
1150‧‧‧將集合S2 中剩餘的元素加到運算序列OL中
1210‧‧‧利用輸入的反矩陣M-1 ,將中間符元依照中間符元之間的相依性分群
1220‧‧‧從相依性i為1的每一群中皆選出產出方法最精簡的中間符元加到運算序列OL中,並且將群中剩餘的中間符元依據組成的相依性加到運算序列OL中
1230‧‧‧檢查相依性為i的每一群中是否可根據運算序列OL中的成員選出相依性小於i的中間符元
1240‧‧‧從上述步驟1230產生的中間符元中,選出相依性小於i的每一群中產出方法最精簡的中間符元加到運算序列OL中,並且將群中剩餘的中間符元依據組成的相依性加到運算序列OL中
1250‧‧‧選出相依性為i的每一群中產出方法最精簡的中間符元加到運算序列OL中,並且將群中剩餘的中間符元依據組成的相依性加到運算序列OL中
1260‧‧‧將所有剩餘的中間符元加到運算序列OL中
1410‧‧‧陣列S之每一元素S[i][j]的內容,1≦i,j≦5
1421‧‧‧因為3S[1][2],所以將S[1][3]合併到S[1][2]中,並清空S[1][3];S[1][2]=S[1][2]∪S[1][3]={2,3},S[1][3]={}
1422‧‧‧因為3S[2][1]以及4S[2][1],所以將S[2][3]及S[2][4]合併到S[2][1]中,並清空S[2][3]及S[2][4];S[2][1]=S[2][1]∪S[2][3]∪S[2][4]={1,3,4},S[2][3]=S[2][4]={}
1423‧‧‧因為2S[3][1],所以將S[3][2]合併到S[3][1]中,並清空S[3][2];S[3][1]=S[3][1]∪S[3][2]={1,2,4,5},S[3][2]={}
1424‧‧‧因為5S[3][1],所以將S[3][5]合併到S[3][1]中,並清空S[3][5];S[3][1]=S[3][1]∪S[3][5]={1,2,3,4,5},S[3][5]={}
1425‧‧‧因為3S[3][1]以及4S[3][1],所以將S[3][3]及S[3][4]合併到S[3][1]中,並清空S[3][3]及S[3][4];S[3][1]=S[3][1]∪S[3][3]∪S[3][4]={1,2,3,4,5},S[3][3]=S[3][4]={}
1426‧‧‧因為5S[4][2],所以將S[4][5]合併到S[4][2]中,並清空S[4][5];S[4][2]=S[4][2]∪S[4][5]={2,5},S[4][5]={}
1427‧‧‧因為4S[4][3],所以將S[4][4]合併到S[4][3]之中,並清空S[4][4];S[4][3]=S[4][3]∪S[4][4]={3,4},S[4][4
1431‧‧‧IMSp,2 的漢明權重為2,IMSp,3 的漢明權重為3;因為IMSp,2 的漢明權重較小,所以在運算序列OL的後方串接一成員[Original(p,2){}]
1432‧‧‧S[1][2]中的剩餘成員為3,且IMSp,3 =IMSp,2 ♁yp,1 ,所以在運算序列OL的後方串接一成員[XOR(p,3){IMS(p,2),y(p,1)}]
1510‧‧‧輸入符元產生器
1512‧‧‧輸入檔
1514‧‧‧輸入檔串流
1520‧‧‧傳輸模組
1530‧‧‧接收模組
ES’‧‧‧已編碼的符元集合
1540‧‧‧猛禽碼解碼器
SS‧‧‧來源符元集合
1550‧‧‧輸入符元重建模組
1560‧‧‧輸入檔
第一圖是猛禽碼之編碼過程的一範例示意圖。
第二圖是一種基於連鎖反應碼之編解碼系統架構的一範例示意圖。
第三圖是一種處理視訊資料的技術的一範例示意圖。
第四圖是根據本揭露一實施例,說明在串流傳輸情境的一來源區塊其區塊長度的定義。
第五圖是根據本揭露一實施例,說明最佳化的運算序列需經過特殊的設計處理後方能產生。
第六A圖是根據本揭露一實施例,說明一種猛禽碼之編碼加速裝置。
第六B圖是根據本揭露另一實施例,說明前編碼運算序列產生裝置產生新的運算序列的另一種方式。
第七圖是根據本揭露一實施例,說明第六圖之編碼加速裝置的平行化架構。
第八圖是根據本揭露一實施例,說明前編碼矩陣產生裝置的運作。
第九圖是根據本揭露一實施例,說明一種猛禽碼之編碼加速方法。
第十圖是根據本揭露一實施例,說明前編碼運算序列產生裝置的一示意圖。
第十一圖是根據本揭露一實施例,說明產生運算序列的流程。
第十二圖是根據本揭露另一實施例,說明產生運算序列的流程。
第十三A圖至第十三F圖以一範例來說明第十一圖之產生運算序列的各步驟以及其運算結果。
第十四圖至第十四E圖以一範例來說明第十二圖之產生運算序列的各步驟以及其運算結果。
第十五圖是根據第六圖之實施例的一應用情境的範例。
第十六圖是根據第七圖之實施例的一應用情境的範例。
600‧‧‧編碼加速裝置
610‧‧‧前編碼運算產生裝置
612‧‧‧前編碼矩陣產生裝置
614‧‧‧前編碼運算序列儲存裝置
616‧‧‧前編碼運算序列產生裝置
620‧‧‧基於運算序列猛禽編碼器
622‧‧‧中間符元快速產生裝置
624‧‧‧噴泉碼編碼器
614a‧‧‧已儲存的運算序列
k‧‧‧區塊長度
616a‧‧‧新的運算序列
622a‧‧‧中間符元集合
624a‧‧‧已編碼的符元集合
632‧‧‧來源符元集合
M‧‧‧編碼矩陣
M-1 ‧‧‧反矩陣
SS‧‧‧一系列的來源符元集合
SS1 ,SSn+1 ,...~SSn ,SSn+n ,...‧‧‧n個來源符元序列
IMS1 ,IMSn+1 ,...~IMSn ,IMSn+n ,...‧‧‧n個中間符元序列
ES1 ,ESn+1 ,...~ESn ,ESn+n ,...‧‧‧n個已編碼的符元序列

Claims (24)

  1. 一種猛禽碼之編碼加速裝置,包含:一前編碼運算序列儲存裝置,儲存至少一運算序列、以及該至少一運算序列各自對應的區塊長度;一前編碼矩陣產生裝置,配置來產生一輸入的區塊長度所對應的一編碼矩陣M並算出反矩陣M-1 ,或是令該前編碼運算序列儲存裝置輸出對應該輸入的區塊長度的一運算序列;一前編碼運算序列產生裝置,根據編碼矩陣M或其反矩陣M-1 ,產生一新的運算序列;以及至少一中間符元快速產生裝置,根據該兩運算序列之一、以及輸入的至少一來源符元集合,產生至少一中間符元集合以提供給至少一噴泉碼編碼器進行編碼。
  2. 如申請專利範圍第1項所述之編碼加速裝置,該編碼加速裝置是以一平行化的硬體架構來實現,其中該至少一中間符元快速產生裝置是多個的中間符元快速產生裝置,並且該至少一噴泉碼編碼器是多個的噴泉碼編碼器。
  3. 如申請專利範圍第1項所述之編碼加速裝置,其中當該輸入的區塊長度已儲存於該前編碼運算序列儲存裝置時,該前編碼矩陣產生裝置令該前編碼運算序列儲存裝置輸出對應該輸入的區塊長度的一運算序列。
  4. 如申請專利範圍第2項所述之編碼加速裝置,其中在該平行化的架構中,多個輸入的來源符元集合被安排成平行輸入於該多個中間符元快速產生裝置,以平行 產生多個中間符元序列,再平行輸出至該多個噴泉碼編碼器來進行編碼。
  5. 如申請專利範圍第1項所述之編碼加速裝置,該編碼加速裝置還包括該至少一噴泉碼編碼器來編碼該至少一中間符元集合,以產生出至少一已編碼的符元集合。
  6. 如申請專利範圍第2項所述之編碼加速裝置,其中該前編碼運算產生裝置以一平行化的方式,將產生的該運算序列同時提供給該多個中間符元快速產生裝置。
  7. 如申請專利範圍第1項所述之編碼加速裝置,其中當該輸入的區塊長度未儲存於該前編碼運算序列儲存裝置時,該前編碼矩陣產生裝置產生該編碼矩陣M並算出反矩陣M-1
  8. 如申請專利範圍第1項所述之編碼加速裝置,其中該前編碼運算序列產生裝置將該新的運算序列及該輸入的區塊長度儲存至該前編碼運算序列儲存裝置。
  9. 如申請專利範圍第8項所述之編碼加速裝置,其中該前編碼運算序列儲存裝置所儲存的多個運算序列的每一運算序列的內容是進行一前編碼運算時所需進行的XOR運算的執行順序。
  10. 如申請專利範圍第1項所述之編碼加速裝置,其中該前編碼運算序列產生裝置接收該前編碼矩陣產生裝置產生的編碼矩陣M,並執行一猛禽碼編碼階段的一高斯消去法運算,並且在該高斯消去法運算結束時,產生該新的運算序列。
  11. 如申請專利範圍第10項所述之編碼加速裝置,其中在 該高斯消去法運算的過程中,該前編碼運算序列產生裝置透過紀錄對編碼矩陣M的列所進行的一系列的XOR運算及排列運算的一流程順序,在該高斯消去法運算結束時,產生該新的運算序列。
  12. 一種猛禽碼之編碼加速方法,包含:儲存至少一運算序列、以及各運算序列各自對應的區塊長度於一前編碼運算序列儲存裝置;當一輸入的區塊長度已儲存於該前編碼運算序列儲存裝置時,由該前編碼運算序列儲存裝置輸出對應該輸入的區塊長度的一已儲存的運算序列;當該前編碼運算序列儲存裝置未儲存該輸入的區塊長度時,算出一編碼矩陣M或其反矩陣M-1 後,由一前編碼運算序列產生裝置來產生一新的運算序列;以及利用至少一中間符元快速產生裝置,根據該兩運算序列的其中一運算序列、以及輸入的至少一來源符元序列,產生至少一中間符元集合以提供給至少一噴泉碼編碼器來進行編碼。
  13. 如申請專利範圍第12項所述之編碼加速方法,該方法採用一平行化的方式,將該前編碼運算序列產生裝置所產生的該運算序列同時提供給多個中間符元快速產生裝置來進行運算。
  14. 如申請專利範圍第13項所述之編碼加速方法,該方法還包括:將一系列的來源符元集合安排成平行輸入於該多個中間符元快速產生裝置,以平行產生多個中間符元序 列,再平行輸出至多個噴泉碼編碼器來進行編碼。
  15. 如申請專利範圍第12項所述之編碼加速方法,其中該前編碼運算序列儲存裝置所儲存的多個運算序列的每一運算序列的內容是進行一前編碼運算時所需進行的XOR運算的執行順序,並且該運算序列的資料結構是由運算、目標、以及{一或多個來源集合}所形成的一串列。
  16. 如申請專利範圍第12項所述之編碼加速方法,該方法還包括:儲存該新的運算序列及該輸入的區塊長度至該前編碼運算序列儲存裝置。
  17. 如申請專利範圍第12項所述之編碼加速方法,其中產生該新的運算序列還包括:產生兩集合S1 與S2 ,並且令該新的運算序列為一空集合,其中集合S1 來自該至少一衍生輸入符元序列的一衍生輸入集合,並且集合S2 來自該至少一中間符元集合的一中間符元集合;將集合S2 中可由集合S1 中的任m個元素所組成的中間符元加到該新的運算序列與集合S1 中,其中該m的值從1開始,並且每次增加1及重複前述步驟直到m的值小於一預定的正整數n為止,m為一正整數;以及將集合S2 中剩餘的元素加到該新的運算序列中。
  18. 如申請專利範圍第15項所述之編碼加速方法,其中在該運算序列的資料結構中,該運算有兩種選擇,一種選擇是XOR運算,另一種選擇是原始運算。
  19. 如申請專利範圍第15項所述之編碼加速方法,其中在該運算序列的資料結構中,該目標是該至少一中間符元集合中的一中間符元的編號。
  20. 如申請專利範圍第12項所述之編碼加速方法,其中產生該新的運算序列還包括:利用反矩陣M-1 ,將至少一中間符元集合中的所有中間符元依照中間符元之間的相依性i來分群;從相依性最小的每一群中,選出一或多個中間符元並加到該新的運算序列中,並且將該群中剩餘的中間符元依據組成的相依性加到該新的運算序列中;將該相依性i加1,並且當相依性為i的每一群中可根據該新的運算序列中的成員選出相依性小於i的中間符元時,從選出的相依性小於i的中間符元中,選出一或多個中間符元加到該新的運算序列中,並且將相依性小於為i的每一群中剩餘的中間符元依據組成的相依性加到該新的運算序列中;否則,直接從相依性為i的每一群中選出一或多個中間符元加到該新的運算序列中,並且將剩餘的中間符元依據組成的相依性加到該新的運算序列中;以及重複上一步驟,直到當相依性i的值小於一預定的搜尋範圍為止,並且當相依性i的值大於等於該預定的搜尋範圍時,將所有剩餘的中間符元加到該新的運算序列中。
  21. 如申請專利範圍第18項所述之編碼加速方法,其中該{一或多個來源集合}是選擇XOR運算時,所需的來源 資料集合。
  22. 如申請專利範圍第12項所述之編碼加速方法,其中該方法由該前編碼運算序列產生裝置根據反矩陣M-1 ,產生該新的運算序列。
  23. 如申請專利範圍第12項所述之編碼加速方法,其中該方法算出編碼矩陣M後,由該前編碼運算序列產生裝置執行一猛禽碼編碼階段的一高斯消去法運算,並且在該高斯消去法運算結束時,產生該新的運算序列。
  24. 如申請專利範圍第23項所述之編碼加速方法,其中在該高斯消去法運算的過程中,由該前編碼運算序列產生裝置透過紀錄對M矩陣的列所進行的一系列的XOR運算及排列運算的一流程順序,在該高斯消去法運算結束時,產生該新的運算序列。
TW101131875A 2012-08-31 2012-08-31 猛禽碼之編碼加速裝置與方法 TWI485992B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
TW101131875A TWI485992B (zh) 2012-08-31 2012-08-31 猛禽碼之編碼加速裝置與方法
US13/726,809 US8839067B2 (en) 2012-08-31 2012-12-26 Apparatus and method for accelerating the encoding of raptor codes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW101131875A TWI485992B (zh) 2012-08-31 2012-08-31 猛禽碼之編碼加速裝置與方法

Publications (2)

Publication Number Publication Date
TW201409946A TW201409946A (zh) 2014-03-01
TWI485992B true TWI485992B (zh) 2015-05-21

Family

ID=50189220

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101131875A TWI485992B (zh) 2012-08-31 2012-08-31 猛禽碼之編碼加速裝置與方法

Country Status (2)

Country Link
US (1) US8839067B2 (zh)
TW (1) TWI485992B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9304852B2 (en) * 2014-02-13 2016-04-05 Quantum Corporation Combined asynchronous and synchronous fountain code storage in an object store
CN105490771B (zh) * 2014-09-17 2019-04-09 重庆邮电大学 一种lt喷泉码编码度分布的构造方法
CN105262564A (zh) * 2015-09-09 2016-01-20 哈尔滨工业大学深圳研究生院 一种分布式喷泉码的二维度分布设计方法
CN105634671A (zh) * 2015-12-23 2016-06-01 中国人民解放军军械工程学院 基于喷泉码和物理层网络编码的通信方法
TWI656745B (zh) * 2017-04-21 2019-04-11 國立清華大學 非正交多工資料傳輸方法及傳輸裝置
CN106992843B (zh) * 2017-04-27 2020-08-07 南京航空航天大学 一种基于多址信道的数字喷泉码度分布优化方法
US20190020357A1 (en) * 2017-07-14 2019-01-17 National Taiwan University Device and Method of Decoding a Raptor Code
CN109005011B (zh) * 2018-08-10 2021-03-12 深圳市智慧海洋科技有限公司 一种用于水声网络的数据传输方法、系统及可读存储介质
CN109274462B (zh) * 2018-09-30 2021-01-01 东北大学 一种基于改进在线喷泉码的图像传输方法
US10785098B1 (en) * 2019-04-30 2020-09-22 Alibaba Group Holding Limited Network configuration using multicast address modulation
KR102021872B1 (ko) * 2019-06-19 2019-09-18 오픈스택 주식회사 인코딩 지연 시간이 개선된 랩터q 인코딩 장치 및 방법
CN111277365B (zh) * 2020-01-16 2022-07-26 北京同有飞骥科技股份有限公司 一种基于喷泉码的自适应分布式数据存储方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070195894A1 (en) * 2006-02-21 2007-08-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems
US7293222B2 (en) * 2003-01-29 2007-11-06 Digital Fountain, Inc. Systems and processes for fast encoding of hamming codes
US20080028275A1 (en) * 2006-06-29 2008-01-31 Digital Fountain, Inc. Efficient Encoding and Decoding Methods for Representing Schedules and Processing Forward Error Correction Codes

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7068729B2 (en) 2001-12-21 2006-06-27 Digital Fountain, Inc. Multi-stage code generator and decoder for communication systems
EP1552617A2 (en) 2002-10-05 2005-07-13 Digital Fountain, Inc. Systematic encoding and decoding of chain reaction codes
JP4971144B2 (ja) * 2004-05-07 2012-07-11 デジタル ファウンテン, インコーポレイテッド ファイルダウンロードおよびストリーミングのシステム
US7594154B2 (en) * 2004-11-17 2009-09-22 Ramakrishna Vedantham Encoding and decoding modules with forward error correction
US7577898B2 (en) 2006-04-10 2009-08-18 At&T Intellectual Property I, L.P. System and method of correcting video data errors
US8315306B2 (en) 2006-09-08 2012-11-20 The Texas A&M University System Distributed joint source-channel coding of video using raptor codes
US8233532B2 (en) * 2007-09-21 2012-07-31 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Information signal, apparatus and method for encoding an information content, and apparatus and method for error correcting an information signal
CN101453297B (zh) * 2007-12-07 2010-12-01 中兴通讯股份有限公司 低密度生成矩阵码的编码方法和装置、及译码方法和装置
US8301974B2 (en) 2008-10-22 2012-10-30 Samsung Electronics Co., Ltd. System and method for low complexity raptor codes for multimedia broadcast/multicast service
US8693501B2 (en) * 2010-11-23 2014-04-08 The Chinese University Of Hong Kong Subset coding for communication systems

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7293222B2 (en) * 2003-01-29 2007-11-06 Digital Fountain, Inc. Systems and processes for fast encoding of hamming codes
US20070195894A1 (en) * 2006-02-21 2007-08-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems
US20080028275A1 (en) * 2006-06-29 2008-01-31 Digital Fountain, Inc. Efficient Encoding and Decoding Methods for Representing Schedules and Processing Forward Error Correction Codes

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
IEEE Std 802.16-2009 *

Also Published As

Publication number Publication date
TW201409946A (zh) 2014-03-01
US20140068386A1 (en) 2014-03-06
US8839067B2 (en) 2014-09-16

Similar Documents

Publication Publication Date Title
TWI485992B (zh) 猛禽碼之編碼加速裝置與方法
JP4971144B2 (ja) ファイルダウンロードおよびストリーミングのシステム
JP5329239B2 (ja) 通信システムのための多体ベース符号の生成器および復号化器
JP5123174B2 (ja) 前方エラー訂正(fec)符号およびストリーミング
US8533555B2 (en) Efficient encoding and decoding methods for representing schedules and processing forward error correction codes
US7412641B2 (en) Protection of data from erasures using subsymbol based codes
JP5216099B2 (ja) 低密度生成マトリックスコードのエンコード方法及び装置、ならびにデコード方法及び装置
CN105991227B (zh) 数据编码方法及装置
KR101908389B1 (ko) 에러 정정 코딩 및 디코딩
KR20170075127A (ko) 패킷손실 복구처리를 위한 경량화된 채널코딩 방법