- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
专题成果报告书ARM 的Binary code 转Verilog code 之翻译器
專題成果報告書ARM 的 Binary code 轉 Verilog code 之翻譯器 元智大學資訊工程學系 組員︰張立蓉、李佳珉 指導教授︰楊正仁教授 摘要 利用 FPGA (Field Programmable Gate Array) 增強電腦計算效能中,將程式移植到 FPGA 平台的過程 耗費人力 耗費時間 Cont. 在此專題計畫中,我們將設計一個程式碼翻譯器 針對沒有任何輔助資訊的二元碼,轉換成FPGA上的硬體描述語言。 幫助系統開發工程師能夠迅速地將一些現有的應用軟體轉換到 FPGA 平台上,獲得可重組態硬體加速的效能提昇。 研究動機 若直接使用硬體描述語言撰寫 FPGA 的 bitstream 開發人員必須要有不短的撰寫經驗 其程式設計概念迴異於一般所熟知的程式設計語言,其學習門檻不低 為了加速系統開發,會使用一些軟體工具,將高階語言所撰寫的軟體轉譯成硬體描述語言來進行移植。 系統開發者沒有軟體原來的高階語言程式碼,在軟體移植上,必須將其執行檔先進行反組譯,再由開發人員針對這些組合語言進行分析與轉譯。 Cont. 開發者的兩個挑戰 需對二元碼的計算架構非常熟悉 能夠完全地掌握二元碼的演算法流程 這兩個挑戰將使得系統開發耗費人力與時間,同時所移植的應用程式,也存在許多潛在的錯誤。 研究問題 探討如何針對沒有任何輔助資訊或 metadata 的二元碼,來進行 FPGA 上硬體描述語言的轉譯工作。 同時為了充分利用 FPGA 的硬體特性,這個轉譯器將對所分析出來的二元程式碼執行緒,做效能最佳化的平行設計。使轉譯後之FPGA運算核心,能夠得到很高的執行效能。 系統軟硬體平台 硬體平台 Altera 公司的 DE2 開發實驗板 軟體平台 Quartus II Metrowerks CodeWarrior for ARM Developer Suite 系統實作流程 實作範例 範例 FIR 濾波器的 C 程式碼︰ float FIR( int N, float c[], float x[] ) { int i=0; float f=0; while(iN){ f = f + c[i]*x[i]; i++;} return f; } 實作:第一部份 編譯完 FIR 濾波器程式碼產生執行檔後,將執行檔反組譯,出現下列二元程式碼︰ 依迴圈判斷結果將其分割成基本區塊。 實作:第二部份. 繼續第二階段的 Verilog 程式碼翻譯,流程如下: 對最外層主程式 .tmp 檔之程式碼進行指令的切割,並逐行放進已定義之陣列。 每讀進一行即進行指令之分析。 當遇到指令碼 “call funcation: tmpX ”之內容時,即跳入遞迴函式對 X.tmp 檔進行程式碼轉換。 步驟2、步驟3持續進行直到未遇到要翻之 .tmp 檔即跳出遞迴 跳回最外層主程式 .tmp 檔後,再繼續分析,直到翻完中途可能遇到之其餘 .tmp 檔,當外層主程式亦翻畢後,即完成 Verilog 程式碼的翻譯。 實作:第三部份 完成第二部份的翻譯後,所面臨的問題是資料相依所造成的傳遞延遲問題。為了解決此問題,因此我們必須將不必要的程式碼移除。 Cont. 將不必要的部份去除後,最後即是 Loop unrolling 的動作。 for(i=0; i50; 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 實作:測試結果 做 Loop unrolling 前 做完 Loop unrolling 後 Cont. 實作測試結果 謝謝指教! * * * * * * * * * Binary Code Parsing Find basic block Verilog code generator Remove data dependency Parallel Analyzer Verilog Code Part 1 Part 2 Part 3 … 0x0000001c: e1540006 ..T. CMP r4,r6 0 aa000008 .... BGE {pc} + 0x28 ; 0x48 ... 0 eafffff4 .... B {pc} - 0x28 ; 0x1c … 1 0x0000
您可能关注的文档
最近下载
- 1.3电动汽车高压系统组成课件讲解.pptx VIP
- 2025广西公需科目考试答案(3套,涵盖95_试题)一区两地一园一通道建设;人工智能时代的机遇与挑战.pdf VIP
- 施工安全管控措施.pdf VIP
- 2023江苏省农村信用社联合社招聘笔试历年典型考题及考点剖析附带答案详解.docx VIP
- 神经网络基础课件.ppt VIP
- 【中考人文地理一轮复习】区域条件评析 课件(共14张PPT).pptx VIP
- 《神经网络基础之》课件.ppt VIP
- 《材料表面工程》全套教学课件.ppt
- 【中考人文地理一轮复习】认知区域的方法:气侯 课件(共19张PPT).pptx VIP
- 2025三年级上册道德与法治第3课《学习有方法》(第1课时)课件.ppt
文档评论(0)