• 沒有找到結果。

第四章 新式解碼器演算法

4.5 演算法效能比較

此小節將新式演算法與遞迴解碼演算法以及 IDGE 的解碼運算量以及運算 時間作ㄧ個較詳細的比較。

本研究利用 matlab 程式實際計算在不同規格下各個演算法所需要的運算 量,模擬平台規格為 AMD FX(tm)-8350 Eight-Core Processor @4.02 GHz 以及 32G DDRIII-SDRAM。解碼所需的運算處理已在章節 3.3.2 作過詳細的介紹,此 處我們將不同的運算透過ㄧ個權重關係的加權,本研究在上述的模擬平台下針

multiplication division

17

addition

ComplexityComplexityComplexity   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 MLM

圖 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 規格如下表:

KS 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)所示,其實前面共有

MK

皆為零,毋需做運算,因此我們僅存後面 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

L

a

,其餘步驟皆與原本相同。

高斯消去法的電路架構圖如下:

圖 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 為ㄧ個大小為

L

L

的單位矩陣,而

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

LT1

D

,並移除前面

SH

個行向量,將其存至 ROM 中。

(2) Matrix Multiplication

接著是調整 Matrix Multiplication 中的處理單元數,本論文提出的 處理單元架構能處理乘數以及被乘數各 8 個元素,因此將處理單元數目 調整為足以處理乘數以及被乘數各

K   n

即可。

(3) Gaussian Elimination

高斯消去法的部分,處理的對象為矩陣

R

,其大小最多為修補訊號

如 表 中 規 格 可 知 , 傳 送 矩 陣 反 矩 陣 的 大 小 為

MN

, 其 中

1 2 7 1 0

MK   SH   

,而

NK         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

相關文件