(轉貼) 快速可編程單晶片系統開發與ANSI C語言功能的硬體加速 (IC Design) (C/C++) (C) (C2H) (News)
Abstract
當嵌入式系統的尺寸與複雜性日漸增加時,開發與整合時間便成為關鍵的限制因素,設計時牽扯到大量在不同晶片上的組合件,造成高成本與面積過大的困擾,在整合與輸入/輸出管理上所面臨的挑戰也使得風險逐漸提高。此外,因為有了增進效能的需求,通常也會讓採用客製化硬體,以便加速以往採用微處理器來執行關鍵的運算工作,成為當前的必要條件。
Introduction
轉貼自http://tech.digitimes.com.tw/print.aspx?zNotesDocId=7CE6EFDAE46854DF482571FD005528C6
對嵌入式系統設計師而言,FPGA已經越來越成為面對這些挑戰的理想解決方案,現代的元件已經夠大、夠快,且在成本上極具競爭力,透過快速原型與現場可編程能力,將能夠包含許多或全部的系統組合件。此外,許多現有的開發工具,將可讓嵌入式可編程單晶片系統的快速開發變的更容易。
在這篇文章中,將討論橫跨硬體系統整合、嵌入式軟體開發與ANSI/ISO標準C語言功能的自動化硬體加速等三種嵌入式系統開發工具。SOPC Builder是一種系統整合工具,可自動化地將系統中的矽智財(intellectual property)模塊與客製化邏輯模組,產生高效能的FPGA架構的互聯邏輯。NiosⅡ是一種高度可配置的軟式微處理器,結合IDE(整合式開發環境)並支援廣泛的軟體與作業系統。NiosⅡ C-to-Hardware(C2H)編譯器是一種對時間相當敏感的ANSI C語言功能進行效能加速的工具,並可在FPGA中將這些程式轉換為硬體加速器。上述三種工具將可以緊密地結合,產生非常自然、流暢地硬體/軟體平台開發流程。
■系統整合
C2H編譯器可在Altera SOPC Builder這種系統整合工具中使用,允許設計師可以在GUI(圖形使用者介面)下指定與連接像是處理器、記憶體與週邊組合件,依據組合件的列表與連接矩陣,SOPC Builder可以輸出系統中所有組合件的HDL(硬體描述語言),這是一種包含了自動產生互聯與仲裁邏輯的高階HDL設計檔案,它也可以自動產生設置ModelSim的專案、腳本與測試台(testbench)。
C2H加速器是一種客製化產生的SOPC Builder組合件,可以自動地插入到系統之中,當系統產生HDL時,加速器便像其他系統組合件一樣地連接起來,使用可編程產生的系統互聯架構來連結系統。
■系統互聯
Avalon交換架構是用來收集連接組合件到記憶體映射暫存器系統的訊號與邏輯,它的功能類似傳統的共享系統匯流排,但其使用動態產生的線路、暫存器與從屬埠仲裁器來增進效能。透過Avalon主控與從屬埠來連接到系統的組合件介面,結合由SOPC Builder所維護的主從架構連線矩陣,將整個系統互聯整合起來。
任何主控或從屬埠可以有一個連接的專屬編號,Avalon交換架構可透過從屬埠的仲裁,來同步地多重主控管理這些連線,它在每個從屬埠的前方插入仲裁模組,來從不同的主控埠管理需求,並從主控埠的這些模組中萃取系統的互聯細節,在從屬埠中也是採用相同的作法。圖1顯示Avalon交換架構在系統中連接多重的從屬與主控埠。
C2H編譯器利用了Avalon的精密功能組,包括位址解碼、資料路徑多路傳輸、等待狀態插入、流水線、動態匯流排大小、從同步多重主控埠進行仲裁、強化管理、時鐘領域跨越與晶片外介面等。
■NiosⅡ軟式微處理器
NiosⅡ軟式微處理器是一種可以應用的矽智財,它的可度可配置能力可廣泛地符合成本/效能的考量,它是一種為FPGA進行最佳化的典型RISC架構,具有32位元的指令與資料、32個一般用途暫存器、三種指令格式、82個三種運算域指令、最多有256個客製化指令,以及選項式的硬體乘法器與除法器。可以透過採用具備GNU C/C++編譯器、指令組模擬器與原始碼除錯器的Eclipse架構整合式開發環境(Integrated Development Environment;IDE),來使軟體開發變的更容易。
傳統上,使用者想對關鍵運算部分增進效能,可以用以下兩種方式:透過用HDL撰寫的客製化硬體指令來延伸處理器的指令集,並將其導入到處理器的邏輯之中,或是透過建立客製化的硬體加速器模組來連接到記憶體系統之中,這兩種方式在不同的狀況下都各有其優勢。客製化指令是一種較短、運算頻繁,且非常低負荷的功能,加速器模組可以從直接記憶體存取時獲得效益,可以在複雜的工作與運算之中獲得極大的頻寬,它也可以獨立地運作,不需要處理器的介入。
典型的設計流程是使用者建立一個基礎硬體平台、為微處理器開發軟體、規劃與找出關鍵的運算、用HDL來實行硬體加速器,並整合加速器到硬體平台之中,然後重複最後的三個步驟,直到符合效能需求為止。然而,使用C2H加速編譯器(C-to-Hardware Acceleration Compiler),軟體開發者可以自動地從他們的C語言程式碼中直接產生硬體加速器。
■NiosⅡ的C-to-Hardware(C2H)加速編譯器
傳統上,C語言到閘極(C-to-gates)的方法是企圖解決產生獨立式硬體模組的問題,C2H則採用不同的方式來達成,它透過產生輔助處理器來卸載與增強用C語言撰寫軟體在微處理器上的執行效能,這種方法可以解決幾個重要的議題:
1.與像是真正的按鈕式加速關鍵的運算原型,或是已經在常見微處理器上執行的C語言,或是數位訊號處理(DSP)元件在內的軟體設計流程緊密地整合。
2.將產生的硬體加速器與處理器記憶體映射直接地連接。
3.無縫式地支援指標器與陣列。
4.有效率地記憶體延遲查覺排程與記憶體處理流水線化。
這個方法的實行僅能夠被這個工具體系所支援,Altera C-to-Hardware Acceleration(C2H)編譯器可以從純正的ANSI/ISO標準C語言產生硬體加速器,並直接存取到記憶體與在處理器系統中的其他週邊,循環與浮點形式是唯一從標準C語言中排除在外的功能,指標器、陣列、架構與列舉(enums),以及所有的迴路型態與控制結構(包括中斷『break』、繼續『continue』與返回『return』語法陳述)都完全支援。C2H使用Altera的SOPC Builder來連接加速器到系統中處理器與任何其他的週邊之上,這將可讓加速器可以像CPU一樣直接存取記憶體映射,允許當從軟體移植到硬體時,能夠無縫式地支援指標器與陣列,C2H編譯器的操控台便是CPU的整合式軟體開發環境,透過支援指標器與非延伸式的ANSI/ISO C語言,C2H編譯器可讓開發者用軟體在處理器中執行,以便快速地產生出功能的原型,然後只需按下一個按鈕,便可以切換到以硬體方式的加速實行。
■C2H設計流程
C2H的設計流程開始於在軟體IDE中的C/C++專案、包含已經寫好以供進行加速的ANSI C語言功能,或在既有的程式碼找出瓶頸所在,並選擇以進行加速。處理流程如下所示:
1.在軟體IDE中進行原型與除錯設計。
2.在IDE中為所選擇目標進行加速功能。
3.在加速的功能上執行C2H分析,以產生包含有所使用的資源、效能資訊、C2H無法進行最佳化的部份程式碼警告,以及關鍵的資料路徑(像是在兩個指標器之間做為輸入參數的迴路承載附屬)等細節報告檔案。這個過程將依據功能的複雜度,以及一般軟體編譯的順序,大約耗費數秒到幾分鐘的時間。
4.最佳化與疊代運算。
5.啟用IDE選項以產生更新的元件程式檔,執行系統產生工具來為整個系統產生邏輯,並在設計中執行合成與佈局佈線。
6.編程硬體影像檔到元件中。
7.執行軟體專案來確認效能,目前是使用在IDE中的硬體加速器。
這個設計流程提供了使用者從軟體IDE驅動整個軟體/硬體分割過程的能力,連接硬體模塊到系統的實行細節,以及與處理器、記憶體與其他週邊通訊以進行萃取的過程。此外,因為在軟體與硬體開發中使用了相同的ANSI/ISO C語言,因此使用者可以隨時切換到軟體中來執行功能,快速地分析以進行加速,或執行完整的流程來產生更新的硬體影像檔。這可提供使用者工具來快速地重複進行除錯與最佳化功能,而不需經歷長時間進行合成與佈局所造成的延遲。(本文由Altera提供)
![061009183822_0.gif](/images/cnblogs_com/oomusou/061009183822_0.gif)