• 沒有找到結果。

3.4 新摺疊演算法二( Serial-In )

4.1.3 控制單元

clk、reset 為由外部輸入的時脈訊號與重置訊號,兩者負責整個控制單元目 前處於哪一個狀態( State );valid 為輸出訊號告知此刻暫存器檔案的輸出訊號 y[n]

值為有效輸出;而 R_w、R_r 為輸出到暫存器檔案的訊號,用來控制寫入或讀取 哪一個中間運算暫存器。因為暫存器檔案中每一個暫存器的位置已經過精心安排 而定址過,所以,只需依照排程矩陣的安排,在每一時序送出一組所需控制訊號 ( R_w、R_r )管理哪個暫存器該做讀取、哪個該做更新。

控制單元實現上應該是由一個 ceil(log2 f)位元長度的計數器,f 為摺疊因數,

並加上由邏輯合成軟體(如:Design Compiler)對每個狀態送出的控制訊號所合出 的數位邏輯(此一部分不是本篇研究範圍,未加以詳細描述)所構成,且其控制單 元整體佔整個折疊演算法架構比例甚小。

4.2 新摺疊演算法 新摺疊演算法 新摺疊演算法二 新摺疊演算法 二 二 二硬體實現 硬體實現 硬體實現 硬體實現

h0+ h1z-1+ h2z-2+ …+ hf-1z-(f-1)

hf+ hf+1z-1+ hf+2z-2+ …+ h2f-1z-(f-1)

h(r-1)f+ h(r-1)f+1z-1+ …+ hrf-1z-(f-1)

+ +

+

z-f

z-f Y(z) X(z)

0 Serial-In演算法

新摺疊演算法二如圖圖圖圖 4.5 所示由 r 個長方形框所構成,而每一長方形框執行

所示;然後再將圖圖圖圖 4.64.64.6 的硬體實現架構圖以圖4.6 圖圖圖 4.1 的概念再區分出三個工作區 塊:處理器陣列、暫存器檔案、控制單元,以下三小節有更詳細的描述功能與實 現方式。

依據圖圖圖圖 4.7MAC 運作內容 Clock=1 ~ f 時,x 輸入端的 fD 圓形定址暫存器存 放內容為( x-(f-1) , …, x-1, x0 ),而 Clock=f+1 ~ 2f 時,x 輸入端存放內容為( x-(f-2) , …, x0, x1 ),每個 MAC 負責 1 short-length FIR 運算。

4.2.1 處理器陣列處理器陣列處理器陣列 處理器陣列

處理器陣列的實現如圖圖圖圖 4.8 所示,每個處理器元素( Processor Element , PE ) 都是由一組乘法器與加法器構成亦稱為 MAC 共 r 個,其操作原理及描述請參考 4.1.1 小節,而 x 輸入端增加一 fD 暫存器為圓形定址模式。

4.2.2 暫存器檔案暫存器檔案暫存器檔案 暫存器檔案

暫存器檔案架構如圖圖圖圖 4.9 所示,圖中的 Acc0 ~ Accr-1為由處理器陣列輸入到 暫存器檔案的資料訊號線(亦即乘加器的輸出中間運算結果需被暫存,將其送到

暫存器檔案中移位暫存器來儲存);F0 ~ Fr-1 為輸出到處理器陣列的資料訊號線 (用來做為 MAC 中的加法輸入端,即代表為加上前一刻的中間運算結果),而 F0

的來源( Source )見圖圖圖圖 4.9 有暫存器的輸出及前一級 fD 的輸出,利用 FS 控制訊號 線來管理;FC 為由 CU 輸出的除頻訊號管理圖圖圖圖 4.9 中 fD 的時脈輸入;clk 為由 外部輸入的訊號,負責工作是暫存器每隔多久更新一次內容;Rst 負責工作為控 制每一暫存器何時該清為 0 並且暫存器同時亦開始動作,然而其連線方式僅為示 意,由於 Rst 與 clk 都必須連接到每一暫存器上,為了避免讓圖圖圖圖 4.9 看起來太過 於複雜,所以,僅以簡單的兩個箭號表示;最後,圖中 y[n]為摺疊架構的輸出訊 號。

4.2.3 控制單元控制單元控制單元控制單元

clk、reset 為由外部輸入的時脈訊號與重置訊號,兩者負責整個控制單元目 前處於哪一個狀態( State );而 FS、FC、Rst 為輸出到暫存器檔案的訊號,用來 控制 F0 ~ Fr 以及 y(n)的輸出是否為正確值。因為暫存器檔案中在做寫入的動作 不像 Parallel-In 那樣複雜,只會寫入固定的移位暫存器中,所以,只需做好 FS 與 FC 控制訊號的管理,便能正確地操作 Serial-In 摺疊演算法。

而控制單元實現上應該是由一個 ceil( log2 f)位元長度的計數器,f 為摺疊因 數,並加上由邏輯合成軟體(如:Design Compiler)對每個狀態送出的控制訊號所 合出的數位邏輯(此一部分不是本篇研究範圍,未加以詳細描述)所構成,且其控 制單元整體佔整個折疊演算法架構比例甚小。

4.3 硬體實現 硬體實現 硬體實現 硬體實現成本函數 成本函數 成本函數 成本函數

在介紹完現今的摺疊演算法-第一篇系統化摺疊演算法[9]與位元平面摺疊 演算法[6],以及新摺疊演算法-Parallel-In 與 Serial-In 摺疊演算法後,再來便是

面積、功率消耗兩方面可以有較佳的表現;然而在成本函數中沒有考慮到執行時 間的因素,原因是假設討論比較的前提是彼此都是使用相同的製程,並且彼此的 資料處理速度( Throughput )皆以相同速度實現,所以,執行時間變得大家都一 樣,因此,本篇的成本函數純粹就架構方面來討論功率消耗與面積大小的問題,

展示各種摺疊演算法的面積與功率消耗的成長趨勢,並希望藉此凸顯何者演算法 可以有最佳的表現;在以下的章節將藉由推論出的面積及功率消耗成本函數來分 析新摺疊演算法與現今理論演算法[6][9]的成長趨勢,同時並假設彼此的電路是 以單一時脈來實現的;表表表 4.1 列出我們在推導各種摺疊演算法實現架構的成本函表 數過程中會使用到的各種參數符號說明。

4.3.1 面積成本函數面積成本函數面積成本函數 面積成本函數

在推論成本函數之前,我們先假設大家使用的乘法器與加法器是使用相同的 技術( Technology )來實現的並且摺疊個數一樣,所以,並不將之列入成本函數中 考慮;因此,簡化問題為討論彼此摺疊演算法硬體實現架構會使用到的記憶體來 當作面積成本函數的評估,評估方式是以正反器( Flip-Flop )為記憶體面積的最小 單位,而來估計其演算法所含正反器個數多寡。

(a) 第一篇系統化第一篇系統化第一篇系統化第一篇系統化摺疊摺疊摺疊摺疊演算法演算法演算法[9] 演算法

摺疊架構圖請參考圖圖圖圖 2.4 與圖圖圖 2.5,並使用表圖 表表表 4.1 的參數,來推理其整個摺疊 演算法架構會使用到的記憶體基本元件正反器個數,即其面積成本函數推導應如 下列公式所示:

r(f+1)L + (K-f)m + ceil(log2 f) + Kb (4.1)

其中,若 i = ceil(j), i∈integer, j∈real number,則 i 為最小整數大於或等於 j。

式子(4.1)中的 L 為乘加動作會使用到的中間運算暫存器的長度,而 L 需視 規格規定的精確度來決定,且 L 亦會隨著 m、b、K 成長,在 Matlab 模擬中以全 精確度來模擬 L = m + b+ ceil(log2 K),觀察圖圖圖圖 2.5( r = 2 ,f = 3 )中發現有 8 個中間 運算暫存器,所以,估計它的暫存器檔案(RF)總共需要 r(f+1) 個。

而式子(4.1)中的 (K-f)m 為代表圖圖圖圖 2.5 上方的 x 輸入訊號多工取樣( Input Sample Multiplexing )行為會使用到的正反器個數,( K-f )是因為只有第一級的 x 輸入訊號不需要卡 f 個輸入訊號暫存器,其他級在實現演算法上皆需卡輸入訊號 暫存器;ceil(log2 f)為表示控制單元會合成出的正反器個數;式子中最後的 Kb 為 估計係數多工會使用到的正反器個數,b 為係數位元長度,K 為 FIR 的 taps 數。

(b) 位元平面摺疊位元平面摺疊位元平面摺疊位元平面摺疊演算演算演算演算法法法法[6]

摺疊架構圖請參考圖圖圖圖 2.8 及圖圖圖 2.9,並使用表圖 表表表 4.1 的參數,來推理其整個摺疊 演算法架構會使用到的記憶體基本元件正反器個數,即其面積成本函數推導應如 下列公式所示:

(2K+1)L + ceil(log2 b) + Kb (4.2)

式子(4.2)中的 L 為表示中間運算暫存器的長度,而( 2K+1 )為估計其摺疊架 構的暫存器檔案會使用到的 L 位元長度的暫存器個數,2K+1 的原因是每個位元 處理器中估計要有 sum 及 carry 這兩個位元,而全部共有 K 個位元處理器,加 上 1 個 L 位元長度移位暫存器來保存 x 端的輸入值; ceil(log2 b)為估計控制單元 所需正反器個數,因其摺疊因數為 b;式子最後的 Kb 為估計係數多工會使用到 的正反器個數。

(c) Parallel-In 摺疊摺疊摺疊摺疊演算演算演算演算法法法法

摺疊架構圖請參考圖圖圖圖 4.1 ~ 圖圖圖圖 4.4,並使用表表表 4.1 的參數,來推理其整個摺疊表 演算法架構會使用到的記憶體基本元件正反器個數,即其面積成本函數推導應如 下列公式所示:

KL + ceil(log2 f) + rb (4.3)

其中,L 為每一個中間運算暫存器的位元長度,K 代表著 Parallel-In 摺疊演 算法架構中的暫存器檔案所包含的暫存器個數,其詳情請參考圖圖圖圖 4.3,利用本篇 論文在第三章提出的排程矩陣原理,讓中間暫存器個數達到最少的實現方式;

ceil(log2 f)代表 Parallel-In 摺疊演算法架構中的控制單元會合出的正反器個數;式 子最後的 rb 為 Parallel-In 摺疊演算法架構係數多工會使用到的正反器個數。

(d) Serial-In 摺疊演算摺疊演算摺疊演算摺疊演算法法法法

摺疊架構圖請參考圖圖圖圖 4.8 ~ 圖圖圖 4.10,並使用表圖 表表 4.1 的參數,來推理其整個摺表 疊演算法架構會使用到的記憶體基本元件正反器個數,即其面積成本函數推導應 如下列公式所示:

(r + (r - 1)f)L + ceil(log2 f) + rb + fm (4.4)

其中,L 為每一個中間運算暫存器的位元長度,(r + (r - 1)f)代表著 Serial-In 摺疊演算法架構中的暫存器檔案所包含的暫存器個數詳情見圖圖圖圖 4.9,r 為 MAC 中 暫存器個數,而(r-1)f 為 MAC 之間溝通暫存器個數;ceil(log2 f)代表 Serial-In 摺 疊演算法架構中的控制單元會合出的正反器個數;rb 為 Serial-In 摺疊演算法架構 係數多工會使用到的正反器個數;式子最後的 fm 為 x 輸入端所需正反器個數。

(e) 模擬面積成本函數成長趨勢模擬面積成本函數成長趨勢模擬面積成本函數成長趨勢模擬面積成本函數成長趨勢

當我們固定 K=256,m=8,b=16 然後,使用 Matlab 來模擬面積成本函數(4.1)

~ (4.4),進而來探討當摺疊因數 f 越大(即表示相對實現的基本運算單元(MAC) 越少的情況下),各種演算法其正反器個數的成長趨勢為何,模擬結果如圖圖圖 4.11圖 所示。觀察各種摺疊演算法的面積成本函數的成長趨勢,發現兩種新摺疊演算法 在正反器個數的成長趨勢方面較現今摺疊演算法有明顯的優勢,而當摺疊因數 f 越大,Serial-In 演算法架構在面積節省上更加明顯。

4.3.2 功率消耗成本函數功率消耗成本函數功率消耗成本函數 功率消耗成本函數

最後,採用[18]這篇估計功率消耗的方法-其評估的方式是計算每次執行重 複( Iteration )時使用到的暫存器總個數來做功率消耗的評估;還有功率消耗成本 函數不做多工器的功率消耗評估,原因是它的功率消耗遠小於暫存器的功率消 耗;另外,功率成本函數亦不將乘加器的功率消耗列入考慮,原因是假設彼此的 摺疊演算法都是用同樣的技術來實現乘法器與加法器,所以其功率消耗應相同。

(a) 第一篇系統化第一篇系統化第一篇系統化第一篇系統化摺疊摺疊摺疊摺疊演算法演算法演算法[9] 演算法

摺疊架構圖請參考圖圖圖圖 2.4 與圖圖圖 2.5,並使用表圖 表表表 4.1 的參數,來推理其整個摺疊 架構在每次執行重複( Iteration )時使用到暫存器的總個數公式,即其功率消耗成 本函數推導應如下列公式所示:

f( r(f+1)L + (K-f)m ) + Kb (4.5)

式子(4.5)中 L 為估算中間運算暫存器的位元長度,參考圖圖圖 2.5 發現一回合中圖 總共需執行 r( f+1 )個中間運算暫存器;而 (K-f)m 為輸入訊號的多工取樣( Input Sample Multiplexing )行為會使用到的正反器個數次數;然而,想要完成一次重複

式子(4.5)中 L 為估算中間運算暫存器的位元長度,參考圖圖圖 2.5 發現一回合中圖 總共需執行 r( f+1 )個中間運算暫存器;而 (K-f)m 為輸入訊號的多工取樣( Input Sample Multiplexing )行為會使用到的正反器個數次數;然而,想要完成一次重複