第三章 RAPTORQ 規格及其編解碼器架構
3.3 解碼器架構
3.3.3 遞迴解碼演算法[12]
為了以下介紹表示的方便,我們將式(3.2)中的前置編碼矩陣以及式(3.3)中的 LT 編碼矩陣重新整理,稱其為傳送矩陣如式(3.6)所示。
2 LT
D = A
G
(3.6)其中
A
矩陣與原先的前置編碼矩陣相同,G
LT2則為G
LT(1,...,N)的第K 1 ~N列向量,修補訊號所對應的列向量,此外令一個
G
LT1表示G
LT(1,...,K'),即來源訊號所對 應的列向量。整個 RaptorQ code 編解碼架構重新整理如圖 3.9 所示。
圖 3.9 RaptorQ code 編解碼架構[12]
由於 RaptorQ code 為一個有系統的(systematic)編碼,因此來源訊號也會納入編碼
訊號(如圖 3.9 中的多工器),傳遞出的編碼訊號可表示為
x
y
。接著,編碼訊號在通道傳遞的過程中可能會遺失,在接收端所接收到的訊號我們表示為
收端則根據遺失訊號所對應的列向量,結合 Sherman-Morrison Formula[10]遞迴 地求得接收矩陣 D 的反矩陣。RaptorQ code 通常都應用在網絡中較高層的部分,因此會有來自較低層的訊
號遺失率
p 。為了能成功地接收到
eK
個編碼訊號,此一演算法令預期接收到的編碼訊號數為
其中
u
r u
r,1,..., u
r,N
,而第i
項元素定義如式(3.11):經過 R 次的遞迴式可以得到
D
†( )R
,在將m
1,...,m 的行向量移除即可得到
R 接收矩陣的反矩陣D 。
†當通道狀況真的十分糟糕時,接收矩陣 D 可能沒有足夠的列向量來求得其 反矩陣;儘管如此,遞迴解碼演算法仍可以用與式(3.10)以及式(3.11)相似的辦 法加入新的列向量,僅需將
u
r u
r,1,..., u
r,N
中的元素改為 1
即可。4. 第四章 新式解碼器演 算法
此一章節要介紹本論文所提出的 RaptorQ code 新式解碼演算法,主要概念 是基於實驗室之前的成果加入新的想法,修改過後與之前的成果相比,有效地化 簡運算量。主要的新想法以及運算量的化簡分別於以下小節分述。
4.1 Systematic code
在第二章節的介紹中曾提到 RaptorQ code 為一個有系統的編碼,即傳送的 編碼訊號中含有來源訊號。在平常的通道下,接收端可以成功地接收到大部分的 來源訊號;然而之前的演算法主要是利用來源訊號為中間訊號的線性組合,因此 都會先求得中間訊號後,再還原得到來源訊號。
不同於先前的演算法,新式解碼演算法主要針對遺失的訊號做運算,而成功 收到的來源訊號則直接利用,提出的解碼器架構如圖 4.1。
圖 4.1 新式 RaptorQ code 解碼架構圖
4.2 Matrix Inverse Lemma
新式演算法的另一個概念是 Matrix Inverse Lemma。在前面章節曾經介紹過 遞迴解碼演算法,其利用事先運算好的傳送矩陣反矩陣,根據遺失訊號一個一 個遞迴地修改接收矩陣的反矩陣,如式(4.8);然而在每一次的遞迴運算中,都 會消耗一定的運算量,因此提出的演算法希望藉由一次處理所有的遺失訊號來 節省遞迴解碼演算法中每次遞迴所消耗的運算量。
如同圖 3.10 的整理,我們將提出演算法中的傳送矩陣
D
、 D 及接收矩陣D 三者的關係以圖 4.2 表示。如圖所示,不同於遞迴演算法的遞迴運算,整個D
† 到D 的運算是一次性。
†圖 4.2 新式解碼器的傳送矩陣與接收矩陣關係圖
接著重新定義三個矩陣之間的關係,由於希望一次處理所有的遺失訊號,因此
D 與 D
的關係如式(4.1)所示。D = D + UV
(4.1)U與V的定義如下所示:
從式(4.5)及(4.6)可以觀察出,Sherman-Morrison Formula 其實就是 Matrix Inverse Lemma 在
L 1
的情況。求得D 後,在將遺失訊號所對應的行向量移除,即可
† 得到接收矩陣的反矩陣D 。
†4.3 結合 LT 編碼矩陣以及接收矩陣反矩陣
圖 4.3 (a)以及圖 4.3 (b)分別為先前演算法的架構圖以及此篇論文提出的新 式解碼架構圖。首先,圖 4.3 (b)中的 Received Symbol Queue 是一個接收訊號的 暫存器,如前ㄧ小節所討論過的,新式演算法會ㄧ次處理所有的遺失訊號,因 此此一暫存器會將所有收到的編碼訊號先存起來,直到所有在傳送矩陣中的編 碼訊號都確定成功接收與否,才會將接收訊號移至後端處理。
(a) 先前解碼演算法的架構圖
(b) 新式解碼演算法的架構圖
另一個不同於之前演算法架構的地方是
G
LT1與D 兩部分,在新式解碼演算
†法中,由於
D 為事先求得的,因此
†G
LT1與D 在解碼開始前皆為已知,因此新
† 式演算法將兩個矩陣結合,不僅避免求得中間訊號的必要,而且其結果亦可事 先運算得到。兩者相乘的式子結合 Matrix Inverse Lemma 可以表示如式(4.7):† † 1
依照上述的推導,我們可以將新式演算法整理如式(4.10):
本論文所提出的新式解碼演算法雖是ㄧ次處理所有的遺失訊號,但其亦能
(a) (b)
圖 4.4 加入新行向量示意圖
因此,整個新式解碼演算法的流程圖整理如圖 4.5;新式演算法針對通道狀況作 判斷,當通道狀況尚可,即遺失訊號數小於等於傳送矩陣所準備的修補訊號 數,則在完成所有編碼訊號的接收確認後,就開始進行解碼;但若通道狀況時 分糟糕,即遺失訊號數大於傳送矩陣所準備的修補訊號數,則接收端會繼續接 收額外的修補訊號,直到成功接收到的編碼訊號數達到
K
才開始進行解碼。4.5 演算法效能比較
此小節將新式演算法與遞迴解碼演算法以及 IDGE 的解碼運算量以及運算 時間作ㄧ個較詳細的比較。
本研究利用 matlab 程式實際計算在不同規格下各個演算法所需要的運算 量,模擬平台規格為 AMD FX(tm)-8350 Eight-Core Processor @4.02 GHz 以及 32G DDRIII-SDRAM。解碼所需的運算處理已在章節 3.3.2 作過詳細的介紹,此 處我們將不同的運算透過ㄧ個權重關係的加權,本研究在上述的模擬平台下針
multiplication division
17
additionComplexity Complexity Complexity Complexity
接著,我們針對不同的 RaptorQ code 規格,來源訊號大小分別為 101、
301、600 以及 1002,依照不同的通道遺失率去估計每一演算法所須的運算量,
其運算量的估計式如表 4.1,依照上述的權重式統計後之曲線圖如圖 4.6(a)~(d) 所示;表 4.1 中的變數在前面各演算法的介紹章節中都已介紹過,唯一不同的 是
s
變數,s
指的是在傳送矩陣中每個行向量(列向量)中的非零項數,此一部分 是針對每一規格產生出的傳送矩陣,分別統計非零項數後作平均,因此此一變 數也可能會是導致估計運算量與實際運算量有些許落差的因素。GF(256) Multiplication GF(256) Division GF(256) Addition
Algorithm [12]
LMNK M LM
圖 4.6 (b) 運算量
K 301
圖 4.6 (c) 運算量
K 600
圖 4.6(d) 運算量
K 1002
上面四張圖的橫坐標為通道遺失率,範圍從
1% ~ 20%
,縱座標則是各演算 法的矩陣乘除法以及加法的運算量總和。從上四圖的模擬結果可以看出,在這 四個規格下,新式解碼演算法的運算量皆較遞迴解碼演算法[12]為節省;然 而,與 IDGE 解碼演算法[8]的比較會發現兩者運算量會出現ㄧ個交界處,而且 會隨著來源訊號數的增加,交界處所對應到的通道遺失率亦越來越小,主要原 因是 IDGE 所處理的矩陣為一個較稀疏的矩陣,只有 RaptorQ 規格中用到少部 分的八位組,其餘皆為二位元的運算,而新式演算法中高斯消去法所處理的𝐑 矩陣為一個較為密集的矩陣,因此所需要的運算量會隨著遺失訊號數的增加而 有較大幅度的上升,即O
(L )3 。儘管如此,IDGE 在作上述整理的運算前,必須先經過整體矩陣的搜尋動 作,即在章節 3.3.1 中所介紹過的部分,而遞迴解碼演算法以及新式解碼演算法 則沒有此一需求。若以矩陣單元讀取(matrix entry access)來計算,IDGE 在搜尋 過程中的矩陣單元讀取為
O M
( 3),其中 M 為矩陣的大小,因此在實際運算的過程中,此一搜尋步驟所消耗的時間不容小覷;本研究亦針對上述四種規格,去 計算各演算法的運算時間,其結果如圖 4.7(a)~(d)所示。
圖 4.7(a) 運算時間
K 101
圖 4.7(b) 運算時間
K 301
圖 4.7(c) 運算時間 K 600
圖 4.7(d) 運算時間 K 1002
上述四張圖的橫坐標為通道遺失率,縱坐標則是運算時間(秒),從圖中可 以看出 IDGE 在搜尋上所消耗的時間十分大,隨著來源訊號數的增加,新式解 碼演算法的運算量在較大通道遺失率的運算量雖然比 IDGE 為多,但因為新式 解碼演算法無須作搜尋的動作,而直接針對遺失訊號的編碼標示符直接作處理 即可,所以在整體的運算時間上,新式解碼演算法的效能仍較優。
5. 第五章 新式解碼器硬體設 計
此一章節將介紹新式演算法以硬體電路的實現方式,包括電路中各個區塊的 電路架構設計以及最後以 FPGA 板驗證的方式。
5.1 演算法硬體架構設計
圖 5.1 為新式演算法的硬體設計架構圖。
圖 5.1 新式演算法硬體架構圖
首先定義電路的輸入波形如下圖所示:
4 A 5 1 8 F B A
ESI 0
C A B 2 1 4 D 6
ESI 2
0 F E 1 3 5 7 6 6
ESI 3 Data_valid
ESI Symbol
clk
共有三個輸入訊號,分別為編碼訊號、編碼訊號標識符(Encoded Symbol Identifier)以及成功收到訊號。ESI 訊號如章節 3.1 描述過的,主要用來標示編碼 訊號在一個編碼區塊中的編號;所以當成功收到訊號為 low 時,電路會將遺失訊 號的 ESI 值做記錄。其中,從圖中可以看出ㄧ個 ESI 會對應到多個編碼訊號,原 因是我們將接收訊號的規格設計如圖 5.3,將n個來源區塊一起作封包,如此便 可以減少編碼訊號上的額外消耗,即ㄧ個 ESI 編碼由n個來源區塊中其對應的編 碼訊號共用。
圖 5.3 接收訊號的規格設計
圖 5.1 所實現的 RaptorQ code 規格如下表:
K S H W r
101 17 10 113 30
表 5.1 RaptorQ code 實現規格
其中,
r
為修補訊號數。下面小節將分別敘述電路中每個區塊的功能:5.1.1 Read Only Memory
如圖 5.1 所示,圖中有塊大小為131 131 8 bits 大小的唯讀記憶體(ROM),
所存內容為事先求得的
d D
mr †,即式(5.9)中VD 的所有列向量。整個傳送矩陣
†D
的 大 小 由 於 我 們 所 選 用 的 規 格 , 應 為 158 個 列 向 量 (K S H r 101 17 10 30),但如同式(5.10)所示,其實前面共有M K
項皆為零,毋需做運算,因此我們僅存後面 131 項元素即可。
將遺失訊號所對應的列向量從唯讀記憶體讀出後,會暫存在一個大小為 131 8 bits 的暫存器中,並對其做後面的相關運算,包括 Matrix Multiplication 以 及從中取出對應的行元素等等,此一做法主要是避免暫存器的消耗。圖中的多工 器用途在於處理式(5.6)的挑選,選擇後再存入暫存器等待之後的高絲消去法運算。
此篇論文所提出的演算法一開始計畫的應用目標是影像串流,而影像串流的 服務對於訊號延遲是十分敏感的,因此如同湧泉碼的設計概念,我們希望接收端 不需要像傳送端傳遞任何確認訊號(acknowledgement)。圖 5.4 是來源訊號數 K 101在不同通道遺失率
p 的情況下,修補訊號數所對應的解碼失敗率。圖中
e 分別針對p
e
0.1、0.05、0.02以及0.01作圖,在修補訊號數為 30 個的情況下,縱使通道遺失率為 0.1,解碼器亦能提供相當低的解碼失敗率,因此在此處設計
縱使通道遺失率為 0.1,解碼器亦能提供相當低的解碼失敗率,因此在此處設計