4.3 軟式解碼硬體電路
4.3.2 高斯硬體電路
傳統高斯電路使用喬登(Jordan)做法,圖 41 此 jordan 消去法的程序本篇已經 稍為作一些修改與原本高斯消去法有些不一樣,原始高斯消去法會先作下三角矩 陣消去法再來做上三角消去法,稱為高斯 LU 消去法,我只是將他消去法步驟稍為 改一下,將要執行消去法 LU 的動作改為先判斷逐行逐列是否合乎消去法規則,若 不是就透過交換方式(swapping)找到合乎高斯消去法規則的行(row)或列(column),
透過行交換,每一列皆還是獨立向量,透過行交換,則要透過暫存器或記憶體記 錄該位置,最後才能做消去法動作。
圖 41 Jordan 高斯消去法程序
但是無論怎麼將硬體改變都無法改變 jordan 高斯消去法在硬體的運算時間,
這是非常令人詬病的一個問題,碰到消去法運算的時間將會耗時很久,有時候有 些矩陣會讓 Jordan 不斷做交換行列動作甚至會在搜尋行或列中,沒有一個符合消 去法矩陣的時候,導致硬體運算會卡在這邊,所以在此本篇論文的高斯消去法將 會使用史密斯(SMITH)高斯消去法[24]電路,達到對硬體運算時間符合的需求。
史密斯高斯消去法的運算動作,它是由 A. Bogdanov, M.C. Mertens, C. Paar, J. Pelzl, A. Rupp 命名。下面程式敘述是以一個 A 矩陣 nxn 做說明,史密斯是透過 該矩陣行和列第一個值 a11做判斷是否需要做消去法或列平移,圖 42 史密斯消去 法與傳統 jordan 高斯消去法節省了至少一個迴圈。
52
For i = 1 : 單位矩陣寬度 while a11 = 0
搜尋第一列為 1 的行,將此列透過平移(shift)方式,放進第一行。
end while;
Eliminate(A);
End for 迴圈。
Start
Load Initial
Matrix Memory
Check a11 = 1 or 0?
Elimination
Shift (1clock
1row)
53
一般我們看到圖 43 在解高斯硬體運算法程序上的步驟變得更簡單,有效改善 硬體在高斯法所需要時間,但是與傳統 Jordan 高斯消去法還有一點不同就是消去 法在史密斯是以全部矩陣直接做做消去動作,這樣會佔硬體相當大空間,在本篇 論文會選擇史密斯架構做為軟式解碼演算法的高斯運算基礎架構,原因在於透過 定點模擬以及查表法有效並且利用訊息傳遞概念,使得原本高斯運算是在[104×
2100]單位長度做運算,現在修正成為[104×158],另外最主要原因是 jordan 消去 法碰到特殊矩陣將無法解決消去動作。
element(1,1)
element(2,1)
element(1,2)
element(2,2)
element(n,1) element(n,2)
element(1,3)
element(2,3)
element(n,3)
element(1,n)
element(2,n)
element(n,n)
add add
add add
add add
add
add
add
add
add
add
out1 out2
row_add
row_add
column_add column_add column_add
圖 44 史密斯高斯消去法架構
圖 44 史密斯高斯消去法是由[104×158]各個子方矩陣程式所組合而成,每一 筆子元素 e(n,n)(element)消去資料是由 e(n+1,n+1)子元素所得到,消去資料的輸出是 由每個元素定義的 out2 做輸出,平移資料是透 e(n+1,n)子元素 out1 得到。此架構在 數位硬體中被定義為流水線(pipeline),在硬體中的優點就是處理速度很快,缺點 就是因為所有指令都會在同一個時序進行所以相對佔據硬體空間也相當大。
在史密斯高斯消去法是以每一次消去的動作當作計算史密斯所需要的工作時 間,當時間等於單位矩陣的寬度就停止硬體動作,在每一個元素裡面都有一個暫 存器保存上一次消去法所做的資料,圖 45 就是史密斯消去法子元素的架構。
54
lock_row
add in2
gs_initial_load(bus
GS Element DataPath
in1 lock_lower_row gs_shift_dat
Internal Internal Internal
Internal
Internal
GS Element FSM
Smith_hold nclk
Internal Internal
shift
在子元素架構中,有兩條控制線是來自於 FSM 控制器為 gs_initial_load 和 Smith_hold,分別控制初始輸入排序後矩陣值和將史密斯動作完後的值保持住,
為了考慮每筆時序硬體皆要有動作避免有閒置發生,在此將資料輸出到後端記憶 體做儲存,表 8 說明子元素架構中的資料運算單元的訊號。
表 8 高斯消去法子元素控制訊號
消去法(Elimination)動作 平移(Shift)動作 add = ‘1’
lock_lower_row = add;
lock_row = ‘1’;
add = ‘0’;
lock_lower_row = add;
lock_row = ‘0’
圖 46 是史密斯高斯消去電路所規劃狀況,計數器 1 負責提供初始資料下載位 置,計數器 2 透過 add 做為平移行和控制每一行的 lock_lower_row、lock_lower 和單位矩陣控制訊號,本論文透過史密斯高斯架構運算時間會從 0.5us 到 13.65us
55
=104
<104 add_p clk
element element
element element 104 x
158 Matrix element
element
element element element
add(1)(1)
gs_cntinitial
_en
Counter1
gs_cntinitial
_en
1‘0’
0
Counter1: work on shift and Initial Status
clk
Load_initial Data
cnt_lock_enable