• 沒有找到結果。

2.4 摺疊位元平面有限脈衝響應濾波器[6]

2.4.2 位元平面濾波器轉換公式推導

2.4 .3 實現實現實現實現位元平面位元平面位元平面位元平面摺疊摺疊摺疊架構摺疊架構架構 架構

實現摺疊位元平面濾波器架構如圖圖圖圖 2.8 所示,假設為 K-1 階有限脈衝濾波 器,且其係數長度為 b 位元,所以,圖中虛線矩形總共會有 K 個,且其摺疊因

數為 b,原因是它分成 b 回合來完成一次 K-1 階有限脈衝濾波器運算;{}中的數 字代表 b 回合中的第幾回合。觀察圖圖圖圖 2.8 並初步估計其暫存器個數應該為 K 個,

但又因為最基本的運算器是一個全加器( Full Adder ),推論要有兩倍的記憶儲存 元件( Sum ,Carry ),所以,中間運算的暫存器個數顯然亦未達到最佳化,仍然有 機會可朝向減少中間運算暫存器的方向來發展一套新摺疊演算法。

資料輸入、係數輸入與資料輸出實際操作流程圖,請參考圖圖圖圖 2.9,將會有更 清楚的概念,(a)中的 Processor Array 那塊即是執行圖圖圖 2.8 的摺疊架構;(b)顯示為圖 位元平面摺疊演算法中基本構成元件-位元處理器,由兩個多工器、兩個記憶元 件(正反器)及全加器所組成,其連線方式如圖所示;(c)以(b)圖為基本元件搭配多 工器、移位暫存器及 VMA 完成(a)架構圖。

第三章 第三章 第三章 第三章

新摺疊演算法之推演與建立

現今有許多的硬體設計為了追求簡單化以及規律性,大多採用運算單元陣列 的形式,其中最著名的就是心脈式( Systolic )陣列。心脈式陣列是由 Kung [16] 在 1980 年提出來的一種硬體架構,這種架構是由一些簡單的基本運作單元( PE )所 連接組成,所以其架構擁有規則且簡單的特性,適合用在超大型積體電路的設計 上。此外,心脈式陣列用到了大量的管線化( Pipelining )以及多重運作( Multi- Processing ),因此,它可以達到高速的運作效能以及維持很高的資料處理速率 ( Throughput )。

當應用所需資料處理速度( Throughput )小於實際電路可以操作的速度時,[9]

-[11]推薦了一些摺疊演算法來減少硬體實現面積。然而,有限脈衝響應濾波器是 非常適合用來討論及實現摺疊技術的應用,因為其基本上只是一直在做重複乘累 加的動作。

從另一個角度來看,倘若在整個系統中,有限脈衝響應濾波器方塊的下一級 若不需要很高的處理速率( Throughput ),那麼此高處理速率的優點,勢必可以拿

來交換一些其他的好處。摺疊硬體就是一個以降低處理速率而獲得硬體面積減少 的一個方法,將一連串基本運作單元的陣列透過摺疊演算法,進而使用少量的運 算單元,而使用分時來完成原本的工作,雖然完成工作的時脈加長,但運算單元 卻減少,對於不必要很高處理速率的系統,不失為一個好方法,而其最大的好處 除了以時間上的優勢取得空間上的改善外,摺疊後的架構也有可重覆使用性,增 加了硬體的彈性。

3.1 新 新 新 新摺疊演算法的硬體架構推導 摺疊演算法的硬體架構推導 摺疊演算法的硬體架構推導 摺疊演算法的硬體架構推導

對於硬體摺疊的好處,是讓人顯而易見的,但是對於摺疊方式的推導,卻沒 有一個非常明確的流程讓人遵循,所以在這一個章節中,首要的目的就是介紹硬 體摺疊的步驟,並將其稱為新摺疊演算法,只要依照步驟實行,整個過程是相當 有規劃地進行,且摺疊後的架構在時脈上也不至於出錯。

一般傳統運算單元陣列,對於訊號傳遞的路徑,可分為兩類:向前路徑 ( Forward Path )以及回授路徑( Feedback Path )。向前路徑上的訊號,在兩兩相鄰 的運算單元之間互有關係;而回授路徑上的訊號,則只有在本體運算單元中有影 響。

對於陣列中的每個基本運作單元,主要區分成乘法器與加法器兩部分;而陣 列中儲存資料的暫存器,則將之抽離開資料路徑( Data Path ),另外再規劃一個區 塊稱為暫存器檔案( Register File ),專門負責暫存器資料儲存與更新,並有技巧 性地對其暫存器定址,成立此一區塊的目的是:希望讓本篇推導的新摺疊演算法 架構與其他現今相關摺疊演算法架構相比,有較佳成本效益即希望能有較少的硬 體面積與較低的功率消耗。

圖 圖 圖

圖 3.1 所示即為一個基本運算處理單元-乘加器( MAC ),為了讓新摺疊演 算法推導表示上方便,本篇將乘加器視為一個乘加點( MA Node ),往後在運算 單元的表示上,也都以乘加點的方式呈現。

x

+

h0

h0

MA node

基本運算單元轉換乘加點

現在就以一個串接 12 個基本運作單元的有限脈衝響應濾波器為例子,說明 新摺疊演算法的推導。一開始在摺疊之前,首先考慮所需要使用的運算單元個 數,假設採用 3 個運算單元,於是可以將 12 個基本運作單元分成 4 列,每一列 的運算單元必須完整的排列對齊,這樣的目的是打算將原本一個回合內完成的資 料計算,分成 4 個的時間點來運作,每一列各分配到一個時間點進行。圖圖圖 3.2 所圖 示就是運算單元的排列方式。

h0 D h1 D h2 D

h3 D h4 D h5 D

h6 D h7 D h8 D

h9 D D

D

0

運算單元陣列 x[n]

y[n]

h10 h11

接著,對整體的架構開始作一些簡單的推導轉換。將每個暫存器(為圖中所 示的 D)放大成( Scaling )4 倍,接著在列與列的每個向前路徑上加入資料銜接的 暫存器(位於每列最後的深色 D),這麼一來,在每回合的第一個時間點時,x[n]

送入資料,僅第一列的三個乘加器( h0 ,h1 ,h2 )開始動作,且將其乘加運算後的 結果存入該列各暫存器的第一個位置,同時,向前路徑上第一列最後一個暫存器 的值,也會傳遞至第一列與第二列的銜接暫存器中,而第二列、第三列及第四列 的運算單元則沒有動作;到了第二個時間點,第二列的第一個乘加器就讀入銜接 暫存器的值,第二列的運算單元開始運作,並且將結果存入該列各暫存器的第二 個位置,其餘三列的運算單元均不動作,當然向前路徑上第二列最後一個暫存器 的值也傳至下一個銜接暫存器;到了第三個時間點,第三列的運算單元會開始計 算並將結果存到各暫存器的第三個位置,第一、二、四列則無動作;到了第四個 時間點,第四列的運算單元會開始計算並將結果存到各暫存器的第四個位置,而 第一、二、三列則無動作;之後進入下一個新的回合,如此一直反覆循環。圖圖圖圖 3.3 說明了上述的動作。

h0

4D

h1

4D

h2

4D

h3

4D

h4

4D

h5

4D

h6

4D

h7

4D

h8

4D

h9

4D 4D

4D

0

運算單元陣列時序規劃 x[n]

y[n]

D

D

D

h10 h11

由此可知,這四列中的第一個乘加器,在每回合的四個動作時間點中是不重 疊的,也就是每列的第一個乘加器不會在同一個時間點同時動作,而每列的第 二、三個乘加器亦然。由於在每列中相對位置的乘加器的工作時間點是兩兩互斥 的,也就是工作的時機互相不衝突,所以可以將四列的運算單元壓縮成一列,成 為圖圖圖圖 3.4 所展示的。於是,只要在一個回合中,送入一個 x[n]資料,並且在這個 回合裡,根據不同時間點,調整每個乘加器各自所需輸入的來源暫存器,以及將 每個乘加器輸出所需儲存的計算結果存入正確的暫存器位置,就可得到正確的運 算。這個方法把整體的運算時間拉長了,但卻減少四分之三的乘加器數目,這就 是目的所在。

MAC 4D MAC 4D MAC 4D

x[n] D

運算單元陣列摺疊架構

原先 12 個運算單元的陣列,經過摺疊演算法調整後,可以明確的分出乘加 器群(MAC Group)及暫存器檔案(Register File),要使整個運算流程正確的動 作,只需要在每個時刻點調整暫存器檔案所需輸出及儲存的資料,並由外部 x[n]

輸入至銜接暫存器,然後都是讀取銜接暫存器,就可以完成工作,至於乘加器群 只要不停的運算就可以了。圖圖圖圖 3.5 是經過摺疊演算法所產生的架構圖。

值得一提的是,在暫存器檔案中每一行( Column )共有四個暫存器,就是先 的排程矩陣( Scheduling Matrix )章節會有更詳細地介紹。

摺疊演算法最主要的精神就是在於時脈上的規劃,將每個回合的動作分時完

3.2 以摺疊演算法實現硬體之方法與特色 以摺疊演算法實現硬體之方法與特色 以摺疊演算法實現硬體之方法與特色 以摺疊演算法實現硬體之方法與特色

3.3 新 新 新 新摺疊演算法 摺疊演算法 摺疊演算法 摺疊演算法一 一 一( Parallel-In ) 一

12,而 r = 3(以 3 個乘加器來實現摺疊演算法)為例說明如何做雛型轉換,而新摺 疊演算法一的雛型轉換步驟如下-

1.將有限脈衝響應濾波器中間的每一乘加動作轉換為基本運算操作單位 MA 乘 加點如圖圖圖 3.1 所示; 圖

2.再來將圖圖圖 3.7 中的 D 放大( Scaling )成摺疊架構所需倍數(倍數依摺疊因數 f 而圖 定, 若 K = 12,r = 3,則 f = 4)如圖圖圖圖 3.8 所示;

3.有了足夠倍數的 D,便能使用時序規劃( Retiming )技術來做移轉摺疊架構所需 的暫存器規劃如圖圖圖 3.9 所示; 圖

4.最後再將圖圖圖 3.9 所示的 D 位置置換( Replacing )為實際使用的暫存器,而暫存器圖 必須與下一小節新摺疊演算法的排程矩陣( Scheduling Matrix )搭配使用,則便 能夠使得新摺疊演算法架構在記憶體管理方面達到最佳化如圖圖圖 3.10 所示,而圖圖 圖圖圖 3.10 中的 RX 將會共用同一個暫存器來實現它,暫存器 RX 的目的為確保摺疊 架構輸入輸出端有暫存器保護。

Retiming

3.3.2 排程矩陣排程矩陣排程矩陣 排程矩陣

將有限脈衝響應濾波器架構轉換為我們的新摺疊演算法應用雛型後,再來就 是要將 r 個最小基本運算操作單元 MAC 的每一輸入、輸出端做好管理,就能完 成有限脈衝響應濾波器的運算功能,以下介紹 4 個排程矩陣( Scheduling Matrix ) 如何應用其來完成排程動作,並且達到記憶體管理的最佳化(即暫存器個數減到 最少):

1.資料輸入矩陣( Data Matrix )-輸入資料 x[n]訊號到 MAC 的乘法器輸入端;

2.係數輸入矩陣( Coefficient Matrix )-輸入係數 h[n]到 MAC 的另一乘法器輸入 端;

3.讀取前一級運算結果矩陣( Feedback Matrix )-讀取前一級運算結果到 MAC 的 加法器輸入端;

4.更新運算結果矩陣( Accumulator Matrix )-讀取 MAC 輸出端的運算結果數值並 更新到所選取的目的暫存器。

( 操作原理: Accumulator = Data * Coefficient + Feedback ;)

clock MAC0 MAC1 MAC2

Feedback Matrix 0

R1 R2 R3

R4 R5 R6

R7 R8 R9

R10 R11

clock MAC0 MAC1 MAC2

1 R0 R1 R2

Accumulator Matrix

R0 R1 R3

解讀 解讀 解讀

解讀排程矩陣排程矩陣排程矩陣排程矩陣::: :

1.當 clock=1 時,3 個 MAC 皆同時動作,操作時序參考圖圖圖圖 3.11,而 R1(ta)為 R1 在 ta時刻的儲存值,

MAC0 在 ta時執行 x0*h0+R1(ta)的運算,到 tb時才更新 R0(tb)為 x0*h0+R1(ta),

MAC1 在 ta時執行 x0*h1+R2(ta)的運算,到 tb時才更新 R1(tb)為 x0*h1+R2(ta),

MAC2 在 ta時執行 x0*h2+R3(ta)的運算,到 tb時才更新 R2(tb)為 x0*h2+R3(ta);

所以,在操作時序的規劃上是可執行的,並不會有無限迴圈的情況出現。

2.當 clock=2 ,3 ,4 時,與 clock=1 同理,注意當 clock=4 時,MAC2 的 feedback 值為 0,原因是此時 MAC2 為代表有限脈衝響應濾波器的最後一級乘加運算,

所以其加法器的輸入端給 0。

3.當 clock=5~8 時,重複 clock=1~4 的動作,只是 Data Matrix 的 x0 換成 x1,表

3.當 clock=5~8 時,重複 clock=1~4 的動作,只是 Data Matrix 的 x0 換成 x1,表