Download presentation
Presentation is loading. Please wait.
1
專題成果報告書 ARM 的 Binary code 轉 Verilog code 之翻譯器 元智大學資訊工程學系 組員︰張立蓉、李佳珉 指導教授︰楊正仁教授
2
摘要 利用 FPGA (Field Programmable Gate Array) 增 強電腦計算效能中,將程式移 植到 FPGA 平台的過程 – 耗費人力 – 耗費時間
3
Cont. 在此專題計畫中,我們將設計 一個程式碼翻譯器 – 針對沒有任何輔助資訊的二元碼, 轉換成 FPGA 上的硬體描述語言。 – 幫助系統開發工程師能夠迅速地 將一些現有的應用軟體轉換到 FPGA 平台上,獲得可重組態硬 體加速的效能提昇。
4
研究動機 若直接使用硬體描述語言撰寫 FPGA 的 bitstream – 開發人員必須要有不短的撰寫經驗 – 其程式設計概念迴異於一般所熟知的程 式設計語言,其學習門檻不低 為了加速系統開發,會使用一些軟 體工具,將高階語言所撰寫的軟體 轉譯成硬體描述語言來進行移植。 系統開發者沒有軟體原來的高階語 言程式碼,在軟體移植上,必須將 其執行檔先進行反組譯,再由開發 人員針對這些組合語言進行分析與 轉譯。
5
Cont. 開發者的兩個挑戰 – 需對二元碼的計算架構非常熟悉 – 能夠完全地掌握二元碼的演算法 流程 這兩個挑戰將使得系統開發耗 費人力與時間,同時所移植的 應用程式,也存在許多潛在的 錯誤。
6
研究問題 探討如何針對沒有任何輔助資 訊或 metadata 的二元碼,來 進行 FPGA 上硬體描述語言的 轉譯工作。 同時為了充分利用 FPGA 的硬 體特性,這個轉譯器將對所分 析出來的二元程式碼執行緒, 做效能最佳化的平行設計。使 轉譯後之 FPGA 運算核心,能 夠得到很高的執行效能。
7
系統軟硬體平台 硬體平台 –Altera 公司的 DE2 開發實驗板 軟體平台 –Quartus II –Metrowerks CodeWarrior for ARM Developer Suite
8
系統實作流程 Binary Code Parsing Find basic block Verilog code generator Remove data dependency Parallel Analyzer Verilog Code Part 1 Part 2 Part 3
9
實作範例 範例 FIR 濾波器的 C 程式碼︰ float FIR( int N, float c[], float x[] ) { int i=0; float f=0; while(i<N){ f = f + c[i]*x[i]; i++;} return f; }
10
實作:第一部份 編譯完 FIR 濾波器程式碼產生執行檔後, 將執行檔反組譯,出現下列二元程式碼︰ 依迴圈判斷結果將其分割成基本區塊。 … 0x0000001c: e1540006..T. CMP r4,r6 0x00000020: aa000008.... BGE {pc} + 0x28 ; 0x48... 0x00000044: eafffff4.... B {pc} - 0x28 ; 0x1c … 10x0000004c0x00000000 20x000000440x0000001c 巢狀迴圈所屬層級終止位址開始位址 基本區塊對照表 依照基本區塊分割,並做第一次的 Verilog 程式碼翻譯動作。
11
實作:第二部份. 繼續第二階段的 Verilog 程式碼翻 譯,流程如下: 1. 對最外層主程式.tmp 檔之程式碼進行 指令的切割,並逐行放進已定義之陣 列。 2. 每讀進一行即進行指令之分析。 3. 當遇到指令碼 “call funcation: tmpX ” 之內容時,即跳入遞迴函式對 X.tmp 檔進行程式碼轉換。 4. 步驟2、步驟3持續進行直到未遇到 要翻之.tmp 檔即跳出遞迴 5. 跳回最外層主程式.tmp 檔後,再繼續 分析,直到翻完中途可能遇到之其 餘.tmp 檔,當外層主程式亦翻畢後, 即完成 Verilog 程式碼的翻譯。
12
實作:第三部份 完成第二部份的翻譯後,所面臨的問題是資料相依所造成的傳 遞延遲問題。為了解決此問題,因此我們必須將不必要的程式 碼移除。 for(i=0; i<50; i=i+1 ) begin t0 <= r8[r4]; t1 <= r7[r4]; t3 <= t1 * t0; r9 <= t3; t2 <= r5; t4 <= t2 + r9; r5 <= t4; r4 <= r4+1; End 移除前 for(i=0; i<50; i=i+1 ) begin t0 <= r8[r4]; t1 <= r7[r4]; t3 <= t1 * t0; t4 <= t4 + t3; r4 <= r4 + 1; End 移除後
13
Cont. 將不必要的部份去除後,最後即是 Loop unrolling 的動作。 for(i=0; i<50; i=i+1 ) begin t0 <= r8[r4]; t1 <= r7[r4]; t3 <= t1 * t0; tmp0_t0 <= r8[ r4 + 1 ]; tmp0_t1 <= r7[ r4 + 1 ]; tmp0_t3 <= tmp0_t1 * tmp0_t0; t4 <= t4 + t3 + tmp0_t3; r4 <= r4+2; end
14
實作:測試結果 做 Loop unrolling 前 做完 Loop unrolling 後
15
Cont. 實作測試結果 Test case Unrolling 展開數 FIR 濾波器 矩陣 Inner Product 1270250 2150130 311090 4 70
16
謝謝指教 !
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.