第四章 新式解碼器演算法
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,解碼器亦能提供相當低的解碼失敗率,因此在此處設計 的規格下,我們令修補訊號數為 30 個。
圖 5.4 修補訊號數與解碼失敗率曲線圖
接著在硬體的實現上,我們針對唯讀記憶體所存取的內容再作深入的探討;
在新式演算法中事先所運算好的傳送矩陣反矩陣,即式(4.5)中的
D 可以表示如
† 式(5.1):
-1而唯讀記憶體中所存的內容如式(4.7),又
G
LT1為D
下半部的子矩陣(見章節 4.2),必要的運算。
整個 Matrix Multiplication 區塊共含有 17 個處理單元(Process Element),處理 單元的架構如圖 5.5。RaptorQ code 有限域的運算定義已在章節 3.1 說明,每個處 理單元中各含有一個
OCT
_LOG 以及 OCT
_EXP作為尋找表(Look-up table)以
供查表,其詳細內容可以參考文獻[8];又每個處理單元處理乘數與被乘數各 8 個 的乘法,因此此處共需要 17 個處理單元以處理乘數與被乘數各 131 個的情況。圖 5.5 處理單元架構圖
5.1.3 Gaussian Elimination
此一部分是還原遺失訊號的最後一個步驟,所作的運算如下式
-1
erased intermediate
x = R S (5.5)
其中
S
intermeadiate為 Matrix Multiplication 所算出的結果。本論文演算法在高斯消去法的硬體實現是參考文獻[13],此篇文獻應用的演 算法為一平移演算法,其特色主要在於同樣是執行高斯消去法,但此演算法卻有
使得每次尋找主列向量(pivot row vector)時,僅需在第一行像量中搜尋即可;不 僅如此,每此的第一列向量即為主列向量。此一演算法執行方式如下:
---
Algorithm Parallelized Binary Gaussian Elimination
Require: Regular Matrix A 0,1
L L (eliminate)的列向量向上環狀平移一列(cyclic shiftup),直到第一列第一行的元素 等於 1,此時則將此列向量定為主列向量,較詳細的 shiftup 運算定義如下: 每次完成一次消去處理 (eliminate),就會有一個"完成處理"的列向量在整個矩陣 的最底部,而這些完成處理的列向量也不會再次加入之後的演算法步驟。消去處 理 (eliminate)的運算定義如下:Eliminate:
0,1
L L 0,1
L L此篇文獻的對象主要是所有元素皆為二位元的矩陣,但此篇論文所要處理 的 RaptorQ code 中含有八位組(octet)的運算,因此在主列向量對其餘列向量消
去時需再乘上一個相對應的比例 1
11
a
La
,其餘步驟皆與原本相同。高斯消去法的電路架構圖如下:
圖 5.7 GE 電路架構圖
此一部分的 GEPE 與 Matrix Multiplication 的處理單元有些許的不同,高斯 消去法的處理單元架構圖如下:
圖 5.8 高斯消去法處理單元
不同於圖 5.5,高斯消去法的處理單元並不會僅有八位組相乘的運算,還有 八位組相除的運算需處理,因此圖 5.8 中多了一個多工器並經由 mode 選擇所處
理的運算是相乘或是相除。此外每個高斯消去法處理單元處理乘數及被乘數(或 除數及被除數)各 5 個的運算,由於本論文所選擇的修部訊號共 30 個,再加上 一個中間值的行向量(式 5.4),但從上述的演算法中可以發現矩陣中的第一個行 向量其實是不需要運算的,因此整個架構需要同時處理的最大方陣大小為
29 1 30,因此共需 6 個高斯消去法處理單元。
此ㄧ部分還有ㄧ處值得注意的地方,此ㄧ高斯消去法模組的輸入訊號為ㄧ 矩陣
R
以及 Matrix Multiplication 模組所算出的中間值。其中R
的定義如式(5.6) 所示:†
R = I + VD UL
I 為ㄧ個大小為
LL
的單位矩陣,而VD
†已在章節 5.1.1 作過說明,U
也已在章節 4.2 介紹;整個VD U
† 即為在 ROM 所讀出的列向量中挑選遺失訊號所對應的行 元素,如圖 5.9 所示:圖 5.9
R
矩陣示意圖而我們也在章節 5.1.1 中討論過,整個 ROM 中所存的資料(即
VD
†)其實為 ㄧ個對稱矩陣,同理可以發現此處的R
也是一個對稱矩陣。然而此ㄧ部分也尚 未實現在本論文的硬體中。5.1.4 RTL Simulation Result
圖 5.10 為 RTL Simulation 的輸入訊號波形圖,從圖中可以看出ㄧ個 ESI 訊 號僅對應到ㄧ個編碼訊號,也就是我們僅對ㄧ個來源區塊作封包(參考圖 5.3),
此一部分是因為最後驗證的 FPGA 板所能提供的資源不夠支援此ㄧ小節所選用 的 RaptorQ 規格,章節 5.2 會舉另ㄧ個規格模擬的例子。
圖 5.10 RTL Simulation 輸入訊號圖
(a)
(b)
圖 5.11 軟硬體模擬結果比較
從圖 5.11(a)及(b)可以看出硬體模擬結果與軟體的模擬結果一致。
5.2 電路架構彈性度
(1) Read-Only Memory
決定來源訊號數以及修補訊號數之後,利用 Matlab 程式事先產生 出
G
LT1D
†,並移除前面S H
個行向量,將其存至 ROM 中。(2) Matrix Multiplication
接著是調整 Matrix Multiplication 中的處理單元數,本論文提出的 處理單元架構能處理乘數以及被乘數各 8 個元素,因此將處理單元數目 調整為足以處理乘數以及被乘數各
K n
即可。(3) Gaussian Elimination
高斯消去法的部分,處理的對象為矩陣
R
,其大小最多為修補訊號如 表 中 規 格 可 知 , 傳 送 矩 陣 反 矩 陣 的 大 小 為
M N
, 其 中1 2 7 1 0
M K S H
,而N K S H r 12 7 10 6
;而唯讀記憶體 所需存入的矩陣大小唯18 18
,Matrix Multiplication 所須處理的運算為乘數與被 乘數各 18 個,而高斯消去法的處理對象為最大至6 6
的R
矩陣以及ㄧ個6 1
的 中間直向量,調整過後的電路架構圖如下:圖 5.12 硬體電路架構圖
如圖所示,Matrix Multiplication 模組的處理單元已調整為 3 個即可。而 RTL
如圖所示,Matrix Multiplication 模組的處理單元已調整為 3 個即可。而 RTL