重組態系統監控機制之設計
林之棟 黃朝章 洪億樹
台灣科技大學 元智大學 元智大學
[email protected] [email protected] [email protected] 摘要
本論文提出在動態重組態架構下,為 了使系統可以準確的更換所需模組,故必 須有完善的資源指標 (Resource Index) 以 瞭解目前硬體實際狀態,並且提供系統作 為是否進行重組態或置換模組的參考依 據,我們利用系統資源狀態擷取、監控以 及管理之方法,使系統可根據應用程式之 複雜度,有效分割交由軟硬體執行來提升 加速運算的效能。
圖 1.1 彈性與執行效能 關鍵詞:動態、重組態、擷取、監控 重 組 態 架 構 執 行 效 能 如 圖 1.1 所
示。將重組態運算運用至硬體電路上,可 以明顯的看出在效能上與以 ASIC 設計 方式的電路相當,並且重組態架構兼具高 度彈性,使硬體電路有多種不同的運作模 組及功能,增加硬體電路的彈性,當實際 電路因應本身電路大小受限之考慮,可以 採重組態架構方式使電路可以彈性組態具 備不同功能之模組,而效能則可以超越指 令集架構設計方式。
一、簡介
硬 體 電 路 的 重 組 態 架 構 (Reconfigurable Architecture) 概 念 源 自 於 重 組 態 運 算 [1][2](Reconfigurable Computing,RC),重組態運算具有可重覆 執行不同功能模組的運算能力,依照實際 程式運作,不同之運算法則需要更換不同 的子模組。基於此運算模式應用在硬體電 路上,衍生出重組態架構。若單純以重組 態運算模式進行單一指令或單一功能運算 時,運作過程較傳統運作方式來得複雜,
導致在實際進行模組置換過程的執行效能 小於傳統方式,不過,當功能模組在使用 上較為頻繁時,運用重組態運算方式能增 加整體運作效能[3]。
二、資源監控系統
(一) 設計背景
當利用 FPGA (Field Programmable Gate Array)邏輯元件來設計一個動態重組 態系統時,若無法掌握 FPGA 上的使用現 況,則無法實現在系統運作時,依據系統 現況,決定是否有足夠資源用以重組態出 新功能的子模組,或者在資源不足時,判 斷是否需要置換現有模組。以上的判斷,
都必須根據系統資源現況著手,因此我們
表 2.2 基本單元總數表 在此提出系統資源管理系統,研究如何將
這些系統資源經過擷取、監控及管理,以 提供系統作為參考。
(二) 系統資源資訊
依 照 FPGA 使 用 狀 況 主 要 分 為 Slice、IOB(Input/Output Block)、LUT(Look Up Table)、TBUF(Tri-state Buffer)四種單 元,我們可以依照此四種單元的使用狀況 做為邏輯閘(Logic Gate)使用量的依據,並 以這些單元之基本邏輯閘的使用個數做為 資源資訊,經系統解讀資源資訊後能清楚 瞭解目前 FPGA 使用狀況。
表 2.1 模組使用元件列表
Logic Element The Num. of Total Num. of occupied Slices 2 out of 2,352 Num. of bonded IOBs 14 out of 284 Num. of 4 input LUTs 3 out of 4,704 Num. of TBUFs
16 out of 2,464
Num. of GCLKs1 out of 4
Num. of GCLKIOBs1 out of 4
邏輯元件
單元
AND OR NOT TBUF Buff D-FFSlices
* * * - - -
IOBs
- - - - 568 284
LUTs
9408 4704 4704 - - -
TBUFs
- - - 2464 - -
我們將資源資訊再細分及閘、或閘、
反向閘、三態閘、暫存器以及 D 型正反器 等邏輯元件為使用資源狀態資訊。此資源 資訊是記錄目前邏輯閘之使用量,從表 2.2 得知各個元件的最大使用數,單元與邏輯 閘總數的關係如表 2.2 所示。表 2.2 第一列 表示基本邏輯元件;第一欄則表示 FPGA 所使用之單元。由於 Slice 是由兩個 LUT 單元所構成,其使用總數從表 2.1 來看是 LUT 總數的一半。在表 2.1 所記錄的 LUT 使用數為三個,換為 Slice 則可看成使用一 個半的 Slice,故在記錄上記為使用兩個 Slice。因此分析基本邏輯元件使用率可以 僅記錄 LUT 的使用率,表示已記算在 LUT 欄位中,故 Slice 欄位資訊記錄以星號(*) 註記,表示省略。
(三) 系統資源資訊存放設計
每 筆 資 料 具 有 24 個 位 元 數 (24 Bits),前 8 位元表示目前欄位,用以分辨 起始、各基本元件欄位;後 16 位元則表示 目前使用個數。資料區段格式如圖 2.1 所 示。
若將上述四種單元加以分析,Slice 單元主要是由兩個 LUT 元件構成,而 LUT 元件是以一個反向閘(NOT Gate)、兩個及 閘(AND Gate)、一個或閘(OR Gate)邏輯元 件構成,故 Slice 單元將會使用到四個及 閘、兩個反向閘、兩個或閘;IOB 是由三 個 D 型正反器(D Type Flip-Flop)及一個輸 入 暫 存 器 (Input Buffer) 及 輸 出 暫 存 器 (Output Buffer)邏輯元件所構成;TBUF 狀 態之基本元件會使用到一個三態閘。
資訊欄 8bit 使用個數記錄欄 16bits 圖 2.1 資料區段
每組資源資訊除了包含六組基本邏
輯元件的資源使用資訊之外,在資訊起始
與結尾部份採用 AA 與 EE 來表示資料之
起始,另外在使用記錄欄若無資源之使用
記錄,故給予 16Bits 高電位(FFFF)來表示 此欄位無使用資源。因此,每組資訊包含 六筆基本邏輯元件資訊再加上起始與結尾 資訊兩筆共是八筆資料,其中每筆資料使 用個數欄為 16Bits,而資訊欄為 8bits,每 一筆資料共使用 24Bit,而每子模組資源資 訊共有八筆資料,則會使用到 192Bit。最 後每筆資源資訊使用總數以十六進制表 示,如表 2.3 所示。
圖 2.2 子模組架構圖 表 2.3 資源資訊定義表
Logic Element Index
使用個數
AND Gate
F1 24C0
NOR Gate
F2 1260
NOT Gate
F3 1260
Tri-State
F4 09A0
Buffer
F5 0238
D Flip-Flop
F6 011C
Start
AA FFFF
End
EE FFFF
在固定模組部份,我們將原有的重組 態架構進行修改,額外增加三個部份:記 憶體單元、控制核心單元、傳送控制單元。
記憶體單元是以記憶體(RAM)為儲 存媒介,其目的為儲存多個子模組的資源 資訊。控制模組核心(Control Core)主要負 責處理四種狀態,包含有(1)接收系統所發 送 的 要 求 資 源 資 訊 之 訊 號 (Request Signal)。(2)接收從子模組端所傳送之區段 值。(3)從記憶體單元中讀取代表現階段子 模組之資源資訊。(4)資訊接收後置入暫存 器(Buffer)送至傳送單元送出。而傳送單元 負責將暫存器中之資源資訊傳送至系統。
整體固定模組細部架構如圖 2.3。
(四) 系統資源資訊擷取機制
在資源資訊的建立與資訊資料的擺 放,基於子模組可運用空間的考量,我們 採取將資源資訊與子模組分開放置,最主 要的目的為降低子模組空間的使用。因 此,我們將重組態架構再進一步細分,把 原有可重組態區域的子模組,額外加入代 表子模組區段的暫存值,我們稱之為子模 組區段值(Sub Module Segment Value,
Sub-SV),我們盡可能的減少暫存值所使用 之位元數,以降低子模組空間運用。我們 將子模組區段值使用三個位元表示,故在 完整系統中可以置換八組不同的子模組。
子模組架構設置方式如圖 2.2。 圖 2.3 固定模組架構圖
在控制核心單元中的控制序列以有
限狀態機流程圖說明如圖 2.4 (Finite State
Machine,FSM),主要負責固定模組中所
有單元之訊號傳送與接收。由於控制核心
除了將原有重組態架構中所接收到的數值 送至解碼器之外,尚需執行子模組區段值 訊號之接收、傳送記憶體位址、接收記憶 體中的資源資訊、傳送核心中暫存器之資 訊至傳送單元等等之工作,為了能將上述 工作準確達成,我們製訂出下列規則搭配 有限狀態機執行,以達成預期目標。
圖 2.4 有限狀態機流程圖 圖 2.5 系統執行程式流程圖
(五) 系統資源監控單元
在系統開始執行程式時,先行判斷要 使用硬體(使用 FPGA 實作之專用電路)或 是軟體(泛用型處理器)執行,當系統經由 演算法判定要使用硬體執行時,再由系統 資源監控單元來做硬體資源資訊的判斷,
利用前述之資源資訊擷取架構可以得知硬 體資源是否足夠,若系統資源足夠,則組 態或重組態一個專用之功能單元,若資源 不足則使用軟體來實作執行。其運作判斷 流程如圖 2.5。
三、系統實作
(一) 系統整體架構
由於一般的應用程式大部分皆由泛
用型處理器來執行,假如有一部分運算複
雜的演算法切割出來改由硬體(FPGA 實
作之專用電路)來執行,就能夠提昇整體系
統效能[4][5][6]。為使整體系統執行效能更
加提升,本論文應用處理法則,分別利用
軟體及硬體實現。為了有效區分軟體與硬
體,我們提出擴增的架構。如圖 3.1。
圖 3.1 系統整體架構圖 假設系統要執行應用程式,則交由
MicroBlaze[7][8][9]應用程式之程式碼,這 時資源監控系統會判定是否要把程式運算 複雜的區段獨立出來,利用 Reconfigurable Module 來 執 行 , 根 據 Reconfigurable Module 目前的資源情況去判定是否足夠 重組態成新的 Module,或是仍由泛用處理 器來繼續做運算處理。資源監控系統也可 以 判 斷 在 Reconfigurable Module 裡 Function Unit 使用情況,當要做置換時把 執行較少次數的 Function Unit 置換掉,換 成目前想要執行的 Function Unit。此時資 源 監 控 系 統 就 必 須 考 慮 置 換 優 先 度
( Priority ) 來 置 換 成 為 新 的 Function Unit。以及 memory 的使用率,可以得知 現在硬體 memory 使用了多少容量。LUTs
(Look Up Table)所佔多少百分比…等 等。這些資源資訊,都能夠當作資源系統 判斷的依據。
(二) 實作
本論文在 Xilinx Vertex II Pro FPGA 板上實作了本論文所提出之系統資源監控 系統,並在 Reconfigurable Module 中先行 存 放 了 兩 個 模 組 分 別 為 Incremeter 、
MyRegister,並設計了一個 DCT Function Unit 提供系統置換之用,其中各模組之硬 體置換條件比較如表 3.1 所示。
Function unit
Memory Usage
gate count
Exe.
time LUT
DCT
118 MB 2,168,576 3 1694
Incrementer 95MB 96
1 8
MyRegister 93MB 115