原创 實做計畫Ⅱ:自動加速[转]

2007-9-17 13:54 2969 1 2 分类: FPGA/CPLD

Print



ednalogo.jpg
 
實做計畫Ⅱ:自動加速
by 作者:Robert Cravotta,技術編輯


EDN


点击看大图


有越來越多的產品可以將演算法模型和軟體碼自動地轉換成硬體,讓那些沒有硬體設計背景的設計人員也能夠完成訂製的硬體加速。這些工具並不會改變設計或工具流程,而是讓流程中的一些手工步驟自動化(圖 1)。其目標是縮短在各種方法上實現某項設計所花的時間,從而讓設計者可以探索更多的設計配置,使整個設計團隊在某項專案期間能依靠單一來源工作,使用自動的“以結構來更正(correct-by-construction)”方法來提高流程的可靠性,並確保驗證流程與原始規格可以密切配合。



点击看大图



正如本文在第一部分所解釋的,用於建立訂製硬體的各種選項(作為用於加速軟體性能的指令或輔助運算器)正在蓬勃發展中。不過,第一部分描述的流程假定:硬體工程師將以人工方式完成軟體到硬體的轉換。雖然各種新型工具能使該流程自動進行,但多數從軟體描述產生 RTL(暫存器轉移語言)的工具都需要設計者至少瞭解一些硬體注意事項(見附文《把軟體移植到硬體》)。



從某項演算法規格或軟體規格建立硬體的過程都具有挑戰性。設計者用軟體來探索和實現某個演算法的技能不同於用 FPGA 或 ASIC 實現同一演算法的技能。軟體設計者很少需要考慮系統時鐘偏斜、匯流排電容和載入、類比信號處理和特性、溫度、功耗,以及電磁干擾,這些都影響硬體設計者的設計最佳化方式。軟體採用一種順序計算模型,而硬體一般要與狀態機和組合邏輯打交道,硬體設計者可以採用高階的平行作業。



傳統的 EDA 工具是使用更高階的硬體抽象來提高設計者的工作效率。自動從軟體碼產生 RTL 的各種工具都有不同的重點。據 CriticalBlue 公司首席執行長 David Stewart 說:“挑戰在於如何抽象各種軟體概念,這樣,工具就能自動地把它們作為硬體來實現。”這些工具是以那些沒有硬體背景的設計者為目標,而不是那些精通 Verilog 或 VHDL 的硬體設計者,並且它們可以在整個設計流程保持使用一種軟體發展方法。演算法模型或軟體碼在整個專案期間都能保持作為一個絕佳的原始資料,這樣,它的改變就能迅速、可靠、自動地傳遞到下游的活動。



点击看大图



與硬體級相比,設計者更容易瞭解在演算法級的整體情況。並且,與 RTL 級模擬器相比,演算法模擬器和軟體模擬器能在寬得多的時間範圍內描述相關系統行為的特點,因此設計者就能探索和勾勒出更多的使用方案。與低階硬體最佳化相比,確定高階的行為最佳化能在整體系統性能方面獲得好得多的性能改善。軟、硬體轉換的自動化也使設計者能探索更多其他的矽晶片實現方法,因為這些工具簡化了設計變動所造成影響的評估工作,並縮短了這方面所花的時間。







透過對資源的報告、時程安排和顯示映射(explicit mapping),這些工具通常支援處理速度和面積之間所折衷下來的分析與實施。它們除產生 RTL 碼以外,還節省了設計者在驗證流程中的時間,因為它們自動產生一個使用來自演算法探索工具激勵源的測試平台。當這些工具以特定的 FPGA 器件或製程技術為目標時,這些工具很少是獨立的;它們都有各家矽供應商的工具介面,或直接整合到其中。



並不是僅僅因為一些工具能自動從軟體產生 RTL 碼,就意味著可以把它們用於所有碼。一般而言,與軟體相比,硬體實現並不能以更好的成本和性能指標來執行複雜的順序運算。比較適合於轉換為硬體的候選演算法或函數是能從多個實例的運行中獲益且並行運算,或者能利用非標準的資料位元寬度(data-bit width),或者能採用流水線,或者是執行時間遠遠高於資料傳輸時間的資料處理。



軟體到 RTL


AccelChip 公司提供各種演算法合成和驗證工具與服務,它們支援針對 FPGA、結構化 ASIC、普通 ASIC 的由上到下之 DSP 設計。該公司去年推出的 AccelChip DSP Synthesis 工具,是 AccelFPGA 的第二代替代品,它能直接從 MathWorks 公司的 Matlab 工具(用於 DSP 演算法開發、資料視覺化、資料分析)自動產生可合成的 RTL 模型。它還推出了 AccelWare,這是一種參數化 DSP IP(知識產權)的建構區塊(building block),這些區塊支援普通的 Matlab 工具箱函數。AccelWare 區塊使用與 Matlab 函數和 Simulink 區塊相同的參數,並且可以讓設計者規定諸如時序等各種實現參數,來達到設計目標。AccelChip DSP Synthesis 工具產生完整演算法的 RTL,包括 AccelWare 區塊。



透過MathWorks' Simulink介面來支援系統級驗證、及整合進Synopsys的ASIC及Xilinx的System Generator的工具流程中,使得AccelChip 的工具可以讓Matlab在整個設計流程中保有絕佳的原始資料。AutoQuantizer 工具利用原始的浮點資料和設計模型來確定每個變數的動態範圍,而使得浮點模型到定點設計的轉換自動進行。AccelChip 的各種工具會生成用來產生Simulink S-函數所必需要的檔案,而Simulink S-函數則是源自於位元真(bit-true)、週期精確的定點 Matlab 模型。AccelChip DSP Synthesis 工具自動建立模擬測試平台,設計者能用它來驗證其後佈局(postlayout)以及定點設計。



Synplicity 公司的各種合成、驗證、實體實現軟體工具是以 FPGA、結構化 ASIC、平台 ASIC、基於單元 ASIC 和客戶擁有加工工具(customer-owned tooling,COT) ASIC 實現為目標。該公司去年推出了 Synplify DSP,它從 Matlab 模型和 Simulink 模型產生可用於合成的(synthesis-ready) RTL 碼。Synplify DSP 在產生 RTL 之前,工具使用系統級再定時(retiming)等多種演算法,在系統級將 Simulink 模型最佳化,因而提高了 DSP 實現性能。設計者可以利用從單通道規格自動產生一個多通道系統,來進行有關引線容量(thread capacity)的假設情況(what-if)分析。該工具能在規定的性能預算內共用器件上的資源,例如乘法器,並且它支援在實現之前進行針對面積和性能的折衷分析,從而減少設計迭代。



Celoxica 公司的 DK 設計工具套件幫助設計者探索硬體和軟體分割(partitioning),自動從 C 描述產生硬體表示,並驗證系統功能。借助支援 Altera SOPC Builder 的 DK Accelerator 設計工具,該技術可以整合到 Altera 的設計流程中。支援 Xilinx EDK 的 DK Design Suite 搭配有 Xilinx 的工具流程,並支援多種高階語言上的硬體和軟體協同模擬(cosimulation),這些語言包括 C、C++、SpecC、SystemC、Handel-C。DK3 發行版支持與 Matlab 和 Simulink 的更嚴密之協同模擬。



利用 DK 工具組轉換基於 C 語言的演算法涉及幾個部分,包括把 C 原始碼移植到 Handel-C(C 的一種),以及對支援硬體和軟體分割的 #pragmas 之使用。Celoxica 公司的行銷副總裁 Jeff Jussel 指出:“設計者從 Handel-C 而不是從假設情況分析模型產生 RTL,這樣就能擷取和表達足夠、且可用來有效率地在硬體中實現複雜演算法的必要細節。”去年,Celoxica 公司藉由 Agility 編譯器的推出來擴充 DK 設計套件的功能,使它不僅只是執行 Handel-C 的合成功能,Agility 編譯器借助一種與 Handel-C 工具幾乎相同的流程來支援 SystemC 合成。



SystemC 是一種基於 C++ 的模型建立(modeling)語言,用來協助系統級設計。SystemC 類庫(library of classes)以標準 C++為基礎,同時也擴充了標準 C++,以便為說明並行行為(concurrent behavior)、時間順序運算、描述硬體的資料類型、結構層次,以及模擬支援等預做準備。在 Celoxica 公司和 Forte Design Systems 公司去年推出 SystemC 合成工具以前,SystemC 工具支援只包括模型建立和模擬。



開發行為合成技術的Forte Design Systems 公司藉由提供一條從高階演算法到 RTL 的自動路徑(包括合成,驗證和協同模擬),使設計者能利用更高階的設計抽象。它的 Cynthesizer 能夠從未定時(untimed)的 SystemC 模型和設計者提供的一組指令和約束(例如時鐘速度、等待時間、流水線操作、迴圈展開),自動構建完全定時的 RTL 實現。透過把不同組的指令應用到相同設計源,設計者就能探索和分析處理性能與晶粒面積之間的折衷。Cynthesizer 的自動行為合成功能包括運算排程、週期定時、狀態機實現、控制和資料路徑設計、資源分配、RTL 產生。



EDA 公司 Mentor Graphics 發佈了多種軟體設計和硬體設計工具,包括以基於 C 的設計為重點的工具。它的 Catapult C Synthesis 演算法合成環境自動從非定時的 C++ 產生 RTL,並相容於 SystemC 模型。Catapult C Synthesis 不需要設計者在 C++ 原始碼中嵌入介面定時(interface timing)。該工具產生基於設計者提供的約束來產生實現,允許探索各種硬體介面,例如串流、單埠或雙埠記憶體、握手、及FIFO。這種架構約束工具呈現出設計中所有埠、陣列、迴圈的一個圖形視圖,可以讓設計者將迴圈展開或合併、流水線操作、RAM、ROM 或 FIFO 陣列映射、資源分配、記憶體位元寬度重設,以及合併記憶體資源。



Catapult C Synthesis 工具採用符號分析和各種最佳化技術,例如順序恒定傳播、可變壽命、迴圈邊界和迴圈陣列索引分析,以及記憶體頻寬最佳化,因此能自動減少運算元(operator)的位元寬度,並共用元件和資源。為了幫助設計者分析各種實現以便尋找最佳的性能和面積折衷,該工具利用x-y 圖、長條圖、表格,或原理圖的圖形方式顯示來結果。階層式的Gantt圖是一種演算法分析和微架構分析工具,它可當作演算法的原理圖查看器。它使設計者能夠檢查資料流程、元件使用情況、迴圈執行概況,從而在 C++ 原始碼中確認記憶體頻寬的限制、妨礙並行的迴圈依賴,以及妨礙最佳時間安排的資料依賴。



Impulse Accelerated Technologies 公司的 CoDeveloper 系統從 Impulse C 原始碼產生 RTL,該語言是標準的 ANSI C 加上擴充的若干相容 C 的庫函數,它們用來表達平行作業。CoDeveloper Universal 使設計者能夠開發混合的 FPGA 和處理器平台,但並不要求設計包括嵌入式處理器。用於 Altera 和 Xilinx 的 CoDeveloper 完成 C 到 RTL 的編譯,以 FPGA為目標,並與各家公司相對的工具組介接。



設計者需要把計算密集型軟體程序(process)移植到 Impulse C,以便能夠自動建立軟體區塊的並行硬體實現。Design Assistant 支援導入個別 C 程序,接受輸入/輸出要求,自動產生範本原始檔案。Impulse C 編程模型支援串流、信號,以及程序間(inter-process)通信的共用記憶體模型。CoDeveloper 為程序間通信產生一個一致的介面,這樣,設計者就能開發一個連接到 Impulse C 的公共介面庫,來滿足專案要求。



各種 Synfora 工具和 IP 是惠普公司程式輸入、晶片輸出(program in,chip out,PICO)“演算法到投片試產(Algorithm-to-Tapeout)”合成專利的開發成果。PICO Express 結合了可配置 IP 以及探索工具和配置工具,它們直接從演算法 C 描述來探索和構建 RTL。IP 包括一條可配置的處理器陣列流水線,用於計算密集型操作,還包括一個可配置的 VLIW(超長指令字)架構,用於控制密集型操作,或當作可編程處理器使用。這種探索工具從 C 建立一個 Pareto 最佳實現組,以滿足不同的性能和面積點,並以圖形方式顯示結果。配置工具把演算法描述(以嵌套迴圈序列來表達)映射到處理器陣列架構流水線。PICO Express 借助串流資料支援多個迴圈,並建立一個速率匹配的 RTL 區塊。



PICO 按照設計者規定的 C 演算法以及關於面積性能和迴圈時間的約束來動作,然後建立一組供選擇的實現,它們具有不同的並行度(degrees of parallelism),可進行性能和成本之間的折衷。該工具確定並只保留最佳的 Pareto 實現。在探索結束時,設計者能對各種實現進行複查,這些實現表示了每一性能點的最佳面積實現。



Poseidon Design Systems 公司的 Triton Tuner 工具和 Builder 工具,是用來自動地從 ANSI C 產生 RTL。該公司提供用於嵌入式系統設計的電子系統級工具,包括硬體/軟體分析、協同模擬,以及用於設計系統晶片和 FPGA 上系統的硬體合成。Triton Tuner 協同模擬工具使用一個基於系統元件交易級(transaction-level)模型的 SystemC 模擬環境,來收集性能測量資料;它也從指令級、函數級和內部迴圈級描述軟體的概況。該工具建立整個系統記憶體層次的模型,包括快取記憶體、寫入緩衝記憶體、RAM 和快閃記憶體,使設計者能夠配置記憶體子系統,從而提高性能。



當設計者把系統在硬體和軟體之間分割後,Triton Builder 工具產生驅動程式、加速器 RTL、系統引導支援、測試條件。它還自動修改原始碼,以便使用加速器區塊。當 Triton Builder 工具修改原始碼時,它把驅動程式加到受影響的碼區塊(code block),以便來配置加速區塊,與它通信,並調用它。為了支援被加速的邏輯區塊,加速器區塊架構可以包括本地記憶體和專用資料傳輸邏輯、一個可改變的匯流排界面、一個可編程高速控制器、一個單步控制器、一個用於查看和干涉記憶體的系統引導。



不同途徑


Tensilica 公司授權其可配置、可擴充、可合成的 Xtensa V 和 Xtensa LX 處理器核心,不過,它的 Xpres 編譯器採取不同的方法來把 ANSI C 轉換成硬體:它自動配置一個 Xtensa LX 微處理器核心,以便可以更迅速地執行 C 碼。Xpres 編譯器與 Xtensa C/C++ 編譯器合作分析對於軟體性能很關鍵的區域,然後利用多種加速技術來探索數百萬種可能的處理器配置。這些配置代表各種訂製的 Xtensa LX 處理器,這些處理器在應用性能和面積之間有所折衷;這些配置均由輸入 Xtensa LX Processor Generator 的 TIE(Tensilica 指令擴充)碼編成。



CoWare 公司的 LisaTek 工具組自動從某種架構規格語言產生 RTL。基於 C/C++ 的 Lisa 2.0 規定了指令集架構。LisaTek 工具能自動產生支援 VLIW、RISC、DSP、SIMD 等架構的 RTL,並建立設計者用來對訂製處理引擎編程所需的訂製軟體發展工具。LisaTek 的描述工具使設計者能夠將指令集最佳化、處理器微架構(microarchitectures),和包括快取記憶體在內的記憶體系統。



Stretch 公司不同於上述各家公司,它同時提供軟體發展工具和矽目標(silicon target)。Stretch S5000 處理器整合了一個 Tensilica Xtensa 處理器核心和一個片上指令集擴充結構(instruction-set extension fabric,ISEF)。Stretch 的軟體可配置 ISEF 資料路徑以專有的可編程邏輯為基礎,設計者可以利用它來擴充處理器指令集。Stretch 整合開發環境支援 C/C++ 功能開發、性能描述和調整、系統驗證、內電路除錯。整合的 Stretch C 編譯器既能編譯擴充指令,又能編譯應用程式碼。



設計者透過在碼中添加 Stretch C 擴充和編譯器內聯函數(intrinsic),來定義新的指令。Stretch C 擴充包括新的資料類型和顯式(explicit)資料移動和資料操作指令,以便使 S5000 的寬的暫存器適應 ISEF。對於編譯器,有幾項限制是必要的,以便加速軟體區塊。例如,擴充指令不能使用浮點資料類型,編譯器必須能夠展開所有迴圈,並且編譯器不支援加速除法和模數(modulus)運算元,除非在編譯時,兩個運算數均為已知。



ISEF 工作於 100MHz,處理器核心工作於 300MHz。這些性能值不僅降低總功耗,而且可以把軟體時間讀寫到 ISEF 的寬暫存器檔,而不會停止 ISEF 的運行。ISEF 包括計算(算術單元和乘法器單元)、路由、流水線、狀態暫存器資源,並且它能支援動態重新配置,但不支援按週期的重新配置。設計者能瞭解整體的資源使用情況是如何在配置修改之間變化的,從而鼓勵他們把重點放在更高階的行為模型和 C 碼上,而不是放在加速實現上,作為一種軟體加速的更高級抽象,加速實現會降低該工具的工作效率。



EDA 工具公司 CriticalBlue 以獨特方式解決了從軟體實現的另一端自動完成軟體到硬體的流程。它的 Cascade 工具直接從編譯後的目的碼(object code)提取出並行,並把它轉換到訂製的微處理器中。這種方法與編程語言無關,因為軟體碼已經處於目標處理器級。它不需要新的語言專業知識、新的軟體發展工具、軟體碼的人工最佳化,並且它支援設計者現有的驗證工具和除錯工具。



這種方法並沒有提供先進的性能,而是透過卸載和加速專用輔助運算器中的處理,來加強某些設計,在這些設計中,成本、功耗或時間表方面的約束使得無法升級主處理器或添加一個完整的指令集處理器。這種工具自動從可執行的軟體碼產生輔助運算器 RTL、微碼(microcode)、測試平台,然後自動修改與輔助運算器一起運算的可執行碼。Cascade 可以讓設計者透過人工干預來將碼和輔助運算器最佳化,並部署訂製的硬體單元。



過去一年,很多公司已經將自己的想法轉變成為有用的新型工具和產品,即從軟體自動產生 RTL 是一種可行的、有價值的功能。事實上,這些工具以多種方式實現了各自的自動化技術,從使用 Matlab 模型,到 C 及其衍生語言,如 ANSI C、C++、SystemC、Handel-C,以及專有的 C 擴充,再到目的碼。他們還把自動加速的目標瞄準了各種實現,包括 FPGA 工具和 ASIC 工具流、處理器陣列、訂製處理器、專有的指令加速結構。



是否有其他方法目前正在悄悄開發,並將在近期宣佈?不得而知。但很可能有更多的開發活動,並最終實現這些類型工具的整合。隨著軟體編譯器的發展,改進的空間也仍然存在,包括支持高級探索的良好資源估算。雖然這些類型的工具將可能成為許多設計工具流程中的主要部分,但它們也許永遠無法取代以下需要:手工編制最先進的計算密集型功能。畢竟,軟體編譯器也無法減少對尖端功能手工編碼的需求。



作者簡介


讀者可透過以下方式與技術編輯 Robert Cravotta 聯絡,電話:1-661-296-5096,傳真:1-661-296-1087,電子郵件:rcravotta@edn.com






把軟體移植到硬體


把軟體移植到某個硬體實現,這類似於在處理器架構之間移植軟體。最好的情況是細節方面的一種活動,而最壞情況則會成為排除故障的噩夢。C 軟體編程語言適合於擷取系統的行為和功能規格,但它不能擷取硬體概念,例如並行構造、匯流排、定時。軟體設計者可能使用的各種構造,例如動態記憶體分配,或使用指標在模組之間傳遞資料,也未能清晰地轉換到硬體。一些源自軟體工具的自動合成能支援 C 的衍生語言,例如 ANSI C、C++、SystemC、Handel-C,或 ANSI C 的專有擴充。



使用這些 C 衍生語言的動機是:使設計者無須把所有基於 C 的系統行為描述,以人工方式改寫成 RTL 碼。這些 C 衍生語言提供多種機制,供設計者擷取原始碼中的硬體概念,但它們這麼做並沒有違反 C 規格。關鍵在於,即使做了很多針對特定硬體的改進之後,C 碼仍然是一種可執行的規格,設計者可以在任何時候編譯和執行它們,以便驗證系統的功能。這些擴充包括用於規定並行、定時約束、模組之間的通信和同步、位元式資料大小、運算元映射到硬體,以及映射陣列等集合資料結構及其操作。



每種 C 衍生語言都以略微不同的方式來處理這些指令。例如,SystemC 依靠顯示時鐘(explicit clock)來規定時序,而 Handel-C 使用各種規則來隱含時鐘,如執行一項需要單個時鐘的任務。為了規定硬體資料類型,Handel-C 引入了硬體資料類型,而SystemC 使用 C++ 的類型系統。Handel-C 目前保留了 C 的指標模型,而 SystemC 使用集合點原始資料類型。



除了擴充 C 標準以外,這些工具還可能對碼施加限制,這些限制是自動產生的 RTL 碼的來源。這些限制(例如禁止浮點算術)是有必要的,因為這些工具比使用整數或浮點算術等類似方法更複雜,更昂貴。經常需要改寫遞迴函數,來確定遞迴的最大深度,或把函數改寫作為迭代碼。



雖然這些 C 衍生語言保留了 C 規格針對功能和行為分析的可執行完整性,但它們彼此之間無法針對 RTL 碼的產生而直接移植。設計者對 C 衍生語言的選擇依賴於工具的輸出品質和可用的支援目標。由於現在有夠多的可用工具,並且近期很可能會出現更多選擇,因此哪種 C 衍生語言會成為當然的選擇尚不明朗。



如要瞭解更多資訊……


如要瞭解文中討論產品的更多資訊,請直接與以下製造商聯絡,並請告訴他們您是在 EDN 中瞭解到他們的產品的。




AccelChip


1-408-943-0700


www.accelchip.com



Altera


1-408-544-7000


www.altera.com



Celoxica


+44-0-1235-863656


www.celoxica.com



CoWare


1-408-436-4720


www.coware.com



Critical Blue


1-408-467-5091


www.criticalblue.com



Forte Design Systems


1-408-487-9340


www.forteds.com



Impulse Accelerated Technologies


1-425-576-4066


www.impulsec.com



MathWorks


1-508-647-7000


www.mathworks.com



Mentor Graphics


1-503-685-8000


www.mentor.com



Open SystemC Initiative


www.systemc.org



Poseidon Design Systems


1-770-937-0611


www.poseidon-systems.com



Stretch


1-650-864-2700


www.stretchinc.com



Synfora


1-650-314-0500


www.synfora.com



Synopsys


1-650-584-5000


www.synopsys.com



Synplicity


1-408-215-6000


www.tensilica.com



Xilinx


1-408-559-7778


www.xilinx.com








Print
 


  © 2007, Reed Business Information, a division of Reed Elsevier Inc. All Rights Reserved.

文章评论1条评论)

登录后参与讨论

用户295299 2010-6-10 18:29

磁力泵 http://www.shenggang.com

long0329998 2008-12-12 11:57

很漂亮 能否提供下参数说明 还有电源?

long0329998 2008-12-12 11:57

很漂亮 能否提供下参数说明 还有电源?
相关推荐阅读
用户90712 2010-06-18 10:37
reset
Designing power-up reset sequence and reset structures in a chip is a critical task and there are ma...
用户90712 2010-02-02 21:59
FPGA书籍收藏[可免费下载]
1. Static Timing Analysis for Nanometer Designs详细介绍了时序分析的方方面面,例子丰富http://uploading.com/files/cd9a457...
用户90712 2008-10-04 16:35
CS gets with parallel program
Computer science is approaching a crisis that some CS experts say could fuel a renaissance of ideas....
用户90712 2008-09-26 19:15
c++ volatile用法(转)
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存...
用户90712 2008-05-21 14:30
电子系统EDA集成开发环境框架结构
EDA集成开发环境是电子系统或嵌入式系统开发必备的工具与手段,本文根据目前的EDA工具软件及其套件结构和电子系统的开发需要,提出了三种不同类型典型的EDA集成开发环境框架结构:板级电子系统EDA集成开...
用户90712 2008-04-28 15:19
GPU通用计算渐成热点,众厂商逐鹿未来高并行性计算市场
图形处理器(GPU)用于通用计算(GPGPU)及其相关方面的问题目前已成为一个热门话题。事实上,整个IT产业都已经敏锐地意识到了GPU通用计算将给PC带来革命性的变化,进而影响到CPU的发展。因此,无...
我要评论
1
1
关闭 站长推荐上一条 /2 下一条