第三章 棘波分類系統架構
3.1 GHA 單元
GHA 單元的架構為 [13] 所提出的架構之延伸。GHA 單元主要由三項功能 單元所組成:記憶體 (Memory) 單元、突觸權重更新 (Synaptic Weight Updating , SWU) 單元、主成分計算 (Principal Components Computing , PCC) 單元。
Global Controller
GHA Circuit
FCM Circuit To/From
CPU x(n) , n=1,…,t fn , n=1,…,t
vj , j=1,…,c
3.1.1 突觸權重更新單元
突觸權重更新 (SWU) 單元主要是基於公式(6) 來設計,雖然直接採用公式(6) 來實作是可行的,但這將會造成大量硬體資源的消耗 [13]。一個可以降低硬體資 源消耗的辦法為將公式(6) 改寫如下:
𝑤𝑗 𝑖 𝑛 + 1 𝑤𝑗 𝑖 𝑛 + 𝜂𝑦𝑗 𝑛 𝑧𝑗 𝑖 𝑛 14 當
𝑧𝑗 𝑖 𝑛 𝑥𝑖 𝑛 − ∑ 𝑤𝑘 𝑖 𝑛 𝑦𝑘 𝑛 𝑗 1 … 𝑝 15
𝑗
𝑘=1
且 𝐳𝑗 𝑛 [𝑧𝑗 1 𝑛 … 𝑧𝑗 𝑚 𝑛 ]𝑇 。而根據下式 𝑧𝑗 𝑖 𝑛 可由 𝑧 𝑗−1 𝑖 𝑛 獲得,如下:
𝑧𝑗 𝑖 𝑛 𝑧 𝑗−1 𝑖 𝑛 − 𝑤𝑗 𝑖 𝑛 𝑦𝑗 𝑛 𝑗 2 … 𝑝 16 當 𝑗 1 時,根據公式(15) 與公式(16) 可得:
𝑧0 𝑖 𝑛 𝑥𝑖 𝑛 17 因此本論文實作了等價於公式(6) 的公式(14) 與公式(16),圖 3.2 描述了硬體當中 公式(14) 與公式(16) 的運作情形。如圖所述,SWU 單元一次計算一筆新的突觸 權重值,以 𝐳𝑗−1 𝑛 、 𝐲 𝑛 、 𝐰𝑗 𝑛 為輸入計算出第 𝑛 + 1 次迭代時的第 𝑗 筆權 重向量 𝐰𝑗 𝑛 + 1 ,同時 SWU 單元亦會計算出 𝐳𝑗 𝑛 供後續計算 𝐰𝑗+1 𝑛 + 1 時
使用,這樣的做法硬體資源消耗將可以有效地被降低。
第三章 棘波分類系統架構
圖 3.2 硬體實現論文公式(14) 與論文公式(16)
一個 SWU 單元的實現辦法為同時計算 𝐰𝑗 𝑛 + 1 與 𝐳𝑗 𝑛 。由於資料維度為 𝑚 ,因此必須使用 𝑚 個相同的模組來分別獨立計算,每個模組的內容如圖 3.3 所示,而 SWU 單元所需要的 area cost 將與 𝑚 呈線性成長關係。因此為了降低 area cost,每筆輸出向量 𝐰𝑗 𝑛 + 1 與 𝐳𝑗 𝑛 將被切割成 𝑏 個區塊,每個區塊中含有 𝑞 個元素。SWU 單元一次僅計算一個區塊的 𝐰𝑗 𝑛 + 1 與 𝐳𝑗 𝑛 。因此,經過 𝑏 個 循環後將可獲得完整的 𝐰𝑗 n + 1 與 𝐳𝑗 𝑛 。
圖 3.3 SWU 單元中每個模組其內部架構 SWU
zj-1(n) Reg.
yj(n)
wj(n) wj(n+1)
(The initial value of Reg. is x(n).)
zj(n)
×
×
+
×
wj,i(n) +
yj(n)
η
z(j-1),i(n) wj,i(n)
zj,i(n)
wj,i(n+1)
3.1.2 主成分計算單元
基於公式(3) 來設計主成分計算 (PCC) 單元架構,此架構中包含了加法器與 乘法器。因為乘法器數量將會根據向量維度 𝑚 而成長,因此當 𝑚 值較大時,直
接實作公式(3) 將會造成大量的資源消耗。為了降低 area cost,如同 SWU 單元一 般將資料切割成 𝑏 個區塊來分別計算。因此公式(3) 可以被改寫為:
𝑦𝑗 𝑛 ∑ ∑ 𝑤𝑗 𝑘−1 𝑞+𝑖 𝑛 𝑥 𝑘−1 𝑞+𝑖 𝑛 18
𝑞
𝑖=1 𝑏
𝑘=1
而實作公式(18) 只需要 𝑞 個乘法器與一個支援 𝑞 筆輸入的平行加法器與一個累 加器即可達成。
3.1.3 記憶體單元
記憶體單元由四個 Buffer 所組成:Buffer A,B,C,D,其中 Buffer A,B,C 為 shift
registers,Buffer D 為一個 two-port RAM。Buffer A 保存由主記憶體中獲得的棘波 訊號 𝐱 𝑛 ;Buffer B 存放 𝐳𝑗 𝑛 供 PCC 單元與 SWU 單元進行運算;Buffer C 存 放突觸權重值向量 𝐰𝑗 𝑛 ;最後,計算出來的特徵值向量 1 … 𝑡 被放置於 Buffer
D 供後續 FCM 單元存取。
第三章 棘波分類系統架構
Buffer A Avalon BusFrom
To Buffer B
. . . . . .
To FCM Circuit
GHA 電路運作流程可區分為四個階段,如圖 3.5 所示,其中 PCC 於 State 3 運算,
SWU 於 State 4 運算,關於這兩項運算的詳細內容將於後續說明。
圖 3.5 GHA 電路運作流程圖
1. n <= 1
2. Buffer A ← x(1)
3. Buffer C ← initial w1(n),w2(n)
Buffer B ← Buffer A
Start to fill Buffer A with x(n+1)
1. Activate PCC Unit
2. Compute y1(n),…,yp(n) based on Buffer B and Buffer C
1. Activate SWU Unit
2. Compute w1(n+1),…,wp(n+1) based on Buffer B and Buffer C
Stop
n <= n+1 Initialization
State 1
State 2
State 3
State 4
Has Buffer A filled ? Stop GHA
training ?
No
No
Yes Yes
第三章 棘波分類系統架構
假定輸入向量 𝐱 𝑛 已存放於 Buffer B 當中,目前突觸權重向量 𝐰1 𝑛 𝐰2 𝑛 被放置於 Buffer C 中,根據 𝐱 𝑛 、 𝐰1 𝑛 、 𝐰2 𝑛 啟動 PCC 單元計算其輸出向 量 𝑦1 𝑛 𝑦2 𝑛 。圖 3.6 可看出由 Buffer B、Buffer C 所獲得的資料與 PCC 單元進
行運算後,該資料流會旋轉放置於 Buffer 尾端供後續 SWU 單元進行運算。圖 3.6 說明了 PCC 單元計算 𝑦1 𝑛 𝑦2 𝑛 時的運作流程,計算 𝑦𝑗 𝑛 被分為兩階段進行:
第一階段求 ∑32𝑖=1𝑤𝑗 𝑖 𝑛 𝑥𝑖 𝑛 ,第二階段計算出 ∑64𝑖=33𝑤𝑗 𝑖 𝑛 𝑥𝑖 𝑛 ,並將結果與 前一階段的輸出結果進行累加計算求得 𝑦𝑗 𝑛 ,這兩階段皆共享相同的一塊電路。
從圖 3.6 可看出 Buffer B 與 Buffer C 中的資料在進行 PCC 計算時資料流會旋轉放 回至 Buffer B 與 Buffer C 尾端。
(a) (b)
第三章 棘波分類系統架構
完成 PCC 運算後,SWU 單元將會於 State 4 被啟動。圖 3.7 說明了 SWU 單 元的運作流程,使用 𝐱 𝑛 𝑦𝑗 𝑛 與 𝐰𝑗 𝑛 𝑗 1 2 ,SWU 單元計算出新的突觸權 重向量 𝐰𝑗 𝑛 + 1 𝑗 1 2 ,並放置於 Buffer C 尾端供後續訓練過程使用。如同計 算 𝑦𝑗 𝑛 一般,計算 𝐰𝑗 𝑛 + 1 一樣被分成兩個階段來進行。第一個階段計算前半 部之 𝐰𝑗 𝑛 + 1 𝑖. 𝑒. 𝑤𝑗 1 𝑛 + 1 … 𝑤𝑗 32 𝑛 + 1 ,第二個階段則計算後半部內容,
兩個階段亦同樣使用相同一塊計算電路。除此之外,計算 𝐰1 𝑛 + 1 時所獲得的 𝐳1 𝑛 被放置於 Buffer B 尾端,如同圖 3.7 (c)與(d)所述,上一步驟所計算出來的 𝐳1 𝑛 將供後續計算 𝐰2 𝑛 + 1 時使用。
GHA 單元分為兩個運作模式:訓練模式、特徵擷取模式。訓練模式會依據輸 入的來源棘波訊號經由迭代計算後調整突觸權重值,而特徵擷取模式會計算出來 源棘波訊號所對應的前兩筆主成分值,特徵擷取模式的運作如圖 3.6 PCC 單元之 運算流程,而計算出來的特徵向量會被存放於 Buffer D 當中。
(a) (b)
第三章 棘波分類系統架構