1. gzyueqian
      13352868059
      首頁 > 新聞中心 > > 正文

      親自實踐項目:系統性能加速的方法(上篇)

      更新時間: 2006-04-06 13:31:23來源: 粵嵌教育瀏覽量:1688

      本文為上下連載的上篇,探討了日益增加的可供選擇的硬件加速方案,并說明不具備硬件背景的設計師如何得益于不斷發展的開發工具。
      ------------------------------------------
      要 點
      ·軟件威力與硬件威力恰如串行操作與并行操作。
      ·定制的硬件加速邏輯不過是許多系統性能加速方法之一。
      ·硬件加速工具針對供缺乏硬件背景的設計師使用,并越來越好用。
      ·選擇指令擴展還是選擇定制協處理器邏輯,取決于設計的硬件需求。


      供設計師實現定制硬件加速的選擇方案和開發工具正在不斷演進。定制硬件加速是一種使并行處理實現起來愈加可行的方法,它能使性能、功耗和成本三者平衡,并將它們推進到一個新境界。生產處理器的Stretch公司首席技術官Albert Wang解釋說:“本公司之所以近推出一種采用集成的可重新配置硬件加速技術的軟件可編程處理器,乃是因為在滿足當今前衛的計算密集應用系統設計需求方面,達到性能要求的時間至關重要?!?BR>這篇連載文章的上篇概述了硬件加速項目工作、可供選擇的方案和工具,也說明了分析軟件、確定需要加速的硬件以及實現硬件加速的過程。下篇將刊于2005年3月的本刊,它將集中討論各種硬件加速工具。這些工具能在系統模型或軟件源區上直接進行操作,因為提供了一個附加的抽象層。
      設計效率和開發生產率是嵌入式系統設計師考慮的重要因素。在本文的描述中,設計效率反映一個設計在達到其處理性能要求和滿足其定時、功耗及成本約束條件方面的優劣程度。由于復雜性對于競爭對手來說是一道障礙,所以能滿足復雜的性能要求與約束條件的嵌入式設計可為開發小組識別并提供標新立異增值功能的機會。如果一個設計達不到足夠復雜性的要求,也就難以提供獨特而又標新立異的增值功能,因為競爭對手可以很快仿效并將各種的想法整合到其自己的產品中。
      然而,這道復雜性障礙是暫時的,因為競爭對手將會集中力量來與你的想法對抗。如果你不能迅速而充分地調整你的產品功能和成本,于競爭對手的工作,你就會喪失率先上 市的優勢。開發生產率會抵消設計效率。它不僅包含完成當前設計和實施工作所需的時間和資源,而且還包含開發成果在無可避免的后續項目中的可重用性。如果你的開發過程和工具在提取你設計成果的非標新立異部分并使之自動化方面不能優于競爭對手的開發過程和工具,你就可能為你的競爭對手在創新方面超越你打開了方便之門。你可能不得不在這些非標新立異細節上比你的競爭對手花費更多的寶貴開發時間和資源。
      ASIC是一種可以針對某種系統優化的半導體器件,只實現某種系統為滿足一些要求而所需的那些功能。ASIC能夠地平衡性能、成本和功耗要求,不過其實現需要較長的開發周期以及大量的一次性工程成本,如果功能要求演變很快,就難以收回這些成本。
      可編程平臺處于這個領域的另一端。這些平臺側重于生產率而不是效率,并要同時顧及可重用性和靈活性,以便快速修改或替代代碼或邏輯,實現新功能。軟件可編程系統能高效地實現順序處理,但是在進行并行處理時效率很低。可編程硬件系統在實現并行操作方面有杰出表現,但是在進行順序操作時通常不如軟件可編程系統效率高。軟件還擅長于整合抽象層,而硬件則出于成本效益和可重用性方面的考慮而無法做到。例如,為了適應一種不同的但功能上等效的硬件,你可能會重新設計硬件,適用于這樣一個系統的軟件卻可能不得不在新舊兩種配置下運行。結果,軟件可抽象功能上不明顯的硬件的微小變化。
      軟件可編程系統和硬件可編程系統所用的開發工具具有根本性的差別。由于每一種可編程功能具有主導的順序性或并行性,軟件工程師和硬件工程師使用的工具要為系統行為提供適當而又不同可視化。Xilinx公司負責DSP設計工具與方法的總監Jim Hwang說,HDL開發人員在從事信號處理應用的開發人員中占一小部分。他解釋道,DSP領域的大多數設計師都使用C和Matlab。按照Jim Hwang的說法,諸如DSP系統生成器之類開發工具“可減少那些不懂VHDL的應用開發人員和系統體系結構設計師使用基于FPGA的產品的障礙”。許多支持定制硬件加速的公司都在為提供工具和器件而投入大量開發資源,這些工具和器件使得非硬件工程師(例如系統設計師和軟件工程師)能用軟件實現像硬件加速那樣的并行性。
      在本次實踐項目進行的早期,EDN不得不做出有關該項目范圍的決定。該項目可能有一個范圍狹小的重點,從而在一個平臺上深入研究某個算法的加速過程;也可能研究幾種體系結構和工具產品,廣泛探討硬件加速技術(從而在每個體系結構上花費較少的時間)?,F在越來越多的公司提供或支持硬件加速技術,為了更好地突出這些公司的方法,我們選擇了一條比較廣泛而又較為淺顯的途徑。僅僅在近的幾個月內,就有兩家公司宣布推出首批產品。Poseidon Design Systems公司推出的工具能直接根據標準ANSI C源代碼合成專用的硬件加速器,而Stretch公司推出的目錄處理器系列和工具集能根據ANSI C源代碼實現硬件加速。



      我們花時間在Altera、ARC、Atmel、MIPS、Tensilica和Xilinx等公司工作平臺上實現他們選擇的算法的硬件加速。在其各自的場所執行這項任務緩解了時間上的約束,同時簡化了我們許可申請和配置各種開發環境的工作;這還意味著廠商的工程人員可以在整個過程中對我們進行指導。                                                                                                                                                  每家公司都在不知道其它公司的選擇的情況下選擇一種算法來進行加速。因此,每家公司可能選擇其經驗多的、能驗證其體系結構和工具如何支持每種加速的分析和實現方法的算法加速技術。由于不鼓勵在兩家公司之間使用共同的算法加速,項目工作得以更好地專注于過程、工具和體系結構機制,從而避免比較各種加速工作效率的誘惑(參見附文《性能比較》)。
      Altera公司提供可編程邏輯器件、相關軟件工具和IP(知識產權)軟件模塊。其Excalibur器件將一個ARM922T處理器(可工作于200 MHz)和Apex 20KE FPGA體系結構組合在一起。就本項目而言,編程目標和加速目標都是32位Nios和Nios II兩種軟處理器芯核,這兩種芯核可駐留在Altera公司的Stratix、Cyclone和HardCopy FPGA器件內。Nios II芯核有三種配置,全都支持定制指令。標準配置的Nios II/s可平衡性能和尺寸(成本)。經濟型配置的Nios II/e以性能為代價實現小的芯核(大約為Nios II/s標準芯核尺寸的一半),并保持與Nios II ISA(指令集體系結構)的兼容性。Nios II/f配置追求處理性能而使芯核尺寸。Altera公司的SOPC(可編程單片系統)Builder系統開發工具能夠利用MathWorks公司的Matlab和Simulink來開發和實現算法設計,并將其移植到HDL文件,以便供Quartus II設計軟件一起使用。
      ARC公司特許使用可配置和預配置的處理器芯核和IP芯核以及開發軟件、仿形工具和一套實時操作系統。其可配置的處理器芯核支持任選的DSP擴展,并可以從4級流水線ARCtangent-A4體系結構擴展到7級流水線ARC 700體系結構。這些芯核都是可合成和可配置的,因此設計師可以擴展ISA。
      本項目的目標是32位ARCtangent-A4處理器,但也側重于使用ARC 600處理器時本項目有何不同之處(突出的就是更長的指令流水線和附加的ALU/DSP擴展)。加速工作專注于實現一個作為定制指令的分組報頭處理功能。ARChitect配置工具可配置這些芯核和Extension Instruction Automation工具套件,以便將Verilog指令擴展納入流水線中。這種工具能自動插入所有控制信號和結構,以便將你的指令納入流水線中并創建一個可供ARChitect工具套件使用的指令庫。
      我們在幾乎所有公司都采用32位體系結構。不過,在Atmel公司,我們探究了一種與一個FPSLIC(現場可編程系統級集成電路)器件上的FPGA集成在一起的8位AVR微處理器芯核。使用8位器件的硬件加速在于降低處理成本,而不在獲得一種的高性能算法。本項目側重于像一個火刑(fire-and-forget)外設處理器那樣對一個數據塊進行CRC(循環冗余檢驗)。這種AVR芯核是不可配置的,所以ISA也不能擴展,但是FPGA使設計師能實現像AVR的協處理器或外設那樣的硬件加速。Atmel公司的System Designer環境包含FPGA開發工具、AVR工作室工具和協同驗證工具,從而能同時進行硬件和軟件的開發和調試。



      MIPS Technologies公司特許使用32位和64位處理器體系結構和芯核。其Pro Series處理器芯核系列的CorExtend功能,允許設計師增加和集成專有指令,并使硬件與芯核緊密耦合。我們專注于內含CorExtend功能的MIPS32 24Kc Pro處理器芯核。本項目涉及到實現和驗證一個對數據塊進行計算的UDI(用戶定義指令)。為了實現這個UDI,設計師在Verilog RTL中制造一個CorExtend模塊并將其與處理器芯核集成在一起。MIPS公司的軟件工具包包括軟件開發環境和MIPSsim軟件仿真器。MIPSsim利用一個API來創建定制的CorExtend擴展庫,所以你可以在MIPSsim上增加任何UDI,進行功能仿真和周期精確仿真。
      Tensilica公司的可配置、可擴展和可合成的處理器芯核強調配置體系結構的預定義元件和構建新指令和硬件執行部件。該公司的Xtensa Processor Generator可為每一種處理器配置生成一個軟件開發環境,其中包括操作系統支持。其Xtensa V處理器芯核是引人關注的對象。(Xtensa LX芯核未及時供貨支持本項目。)在Tensilica公司進行的實踐活動專注于實現計算指令擴展,其中有一種指令擴展所用的數據比數據流結構在一個周期內能支持的還多。為了創建指令擴展,工程師可以使用TIE(Tensilica Instruction Extension)語言和編譯程序。TIE語言是由Verilog語言和C語言混合而成的,用以描述包括多周期和流水線指令在內的定制指令。TIE編譯程序生成各種文件,以便定制軟件工具鏈,擴展指令集仿真器及C建模環境,評估用于處理器配置和定制指令的硬件資源。
      Xilinx公司提供可編程邏輯器件、先進的集成電路(IC)、知識產權(IP)和軟件設計工具。我們在Xilinx公司使用裝入Virtex和Spartan FPGA器件的32位MicroBlaze軟處理器芯核。Xilinx公司還提供8位PicoBlaze軟芯核和PowerPC 405硬芯核。加速工作專注于為MP3實現作為定制邏輯模塊或外設的功能。MicroBlaze不支持定制指令擴展,但是,借助一個FSL(快速單工鏈路)接口或CoreConnect芯片級外設總線,它確實支持用戶定義的作為外設或協處理器的硬件加速。FSL接口在MicroBlaze寄存器堆和定制加速邏輯之間提供一個等待時間很短的專用接口。其嵌入式開發工具包和Xilinx Platform Studio為生成MicroBlaze和PowerPC設計提供一個集成環境。
      各種選擇
      有時候,設計師要求一個時間性強的算法的執行速度比軟件能處理的速度更快。在這種情況下,他們可以嘗試通過以下方法加速算法的性能:重組算法;把更多的數據存儲器用于解決問題,例如使用一個查尋表;或者在手工編碼的裝置中實現算法。設計師可以使用更快的處理器,將問題分配給多個處理引擎,或者使用應用優化的處理器體系結構,例如集成有專用硬件加速器的ASSP(專用標準產品)。設計師甚至可能考慮創建其自己的定制指令或硬件加速器。



      為一個算法分配存儲器等處理器資源可以提高該算法的速度,但是需要在硬件資源方面進行權衡。使用芯片內而不是芯片外存儲也會在性能上產生質的區別。將算法作為手工編碼裝置來實現,就會使設計師保持使用一個固定的ISA處理器,但卻會將他與該處理器緊密地捆綁在一起。使用更快的處理器可能引發功耗增大等負面影響。把設計重新分配給多個處理引擎,例如采用一個微處理器和一個DSP ,就允許設計師使用適合于各組功能的器件,但卻會增加復雜度。ASSP可為特定應用實現的外設和硬件加速功能。然而,采用ASSP會使產品標新立異富有挑戰性,因為ASSP的目標范圍很狹小,會被競爭對手獲取。特許使用IP(知識產權)芯核來加速算法可能是行得通的,但是,這些芯核是可以特許使用的,所以也會被競爭對手獲得。因此,ASSP不是一種使產品標新立異的部件。
      定制硬件加速是一種實現并行處理的越來越可行的方法。而且,就某些并行操作來說,定制硬件加速與軟件實現方法相比,能使性能提高一到兩個數量級。你可以利用一個連接到標準處理器的獨立FPGA實現定制硬件加速。包括Altera公司、Atmel公司、QuickLogic公司、Stretch公司和Xilinx公司在內的幾家處理器供應商提供一種在一塊芯片上集成有FPGA的處理器。愈來愈多的軟件供應商,如AccelChip公司、Altera公司、Celoxica公司、Critical Blue公司、Poseidon Design Systems公司、Stretch公司和Xilinx公司,正在提供使沒有受過全面硬件設計培訓的設計師易于使用硬件加速的軟件工具。將加速功能整合到應用軟件中常常要用編譯程序固有的特性或在線匯編代碼代替源代碼。
      設計師可以將定制硬件加速作為一個與處理器體系結構緊密聯系的定制指令來實現。定制指令是處理器的ALU(算術邏輯部件,圖1)的有效擴展。定制指令邏輯與處理器時鐘速率有關,并必須提供控制信號,以便在定制邏輯的關鍵通道過長時停止流水線運行或實現一條定制流水線。如果存在數據相關性,則設計師可能需要使定制指令多周期化或流水線化。如果設計師需要訪問的數據超過ALU數據通道容量(通常為兩個操作數和一個結果),則他們就無法高效地實現適用于數據密集算法的定制指令,除非處理器體系結構支持局部存儲、寄存器和數據訪問機制。
      另一種實現硬件加速的方法就是通過一個數據接口(例如存儲器控制器),將一種與處理器松散聯系的定制邏輯模塊用作協處理器或外設(圖2)。協處理器執行處理器以外的邏輯運算,因此關鍵的通道定時問題不會直接影響處理器芯核的時鐘至時鐘操作。然而,這些問題會對你的系統的整個操作產生影響。協處理器還能在無需處理器介入的情況下訪問系統中的其它外設或存儲器。
      過 程
      盡管我們工作在一種可能是高度受控的、跟實驗室一樣的演示環境中,每一個實踐活動都有某種程度的故障檢修樂趣。在一次實踐活動期間,一臺工作站死機了,誰也不太溫文爾雅。然而,這種故障也確實說明了我們的實踐活動是斷斷續續的。在另一次實踐活動中,出現過一次驅動器與工具版本的不匹配,不過這一次的責任在于將設計代碼移植到了一個新的工具版本和一個不同的目標上。
      常見的故障檢修問題是由人工修改代碼或配置文件引起的。由于這些實踐活動處理的都是“簡單的”例子,我們沒有執行嚴格的版本控制。然而,這種做法終被證明是一個錯誤。構建、執行和簡介每一種配置都意味著要使用間接的支持文件,因此,很容易在這里或那里忘掉一次修改。腳本文件終在弄清情況方面發揮了作用。
      研究不同體系結構和工具組的時間有限,不允許本項目探究整個EDA工具鏈。例如,我們沒有時間等待物理合成工具完成其操作,所以我們實際上只是討論那部分過程而已。適合于本項目的通用硬件加速設計流程側重于確定和創建硬件加速并將其納入到協同仿真環境中(圖3)。
      每一次實踐活動都從僅僅用軟件實現算法開始。仿真工具是任何協同開發工具套件中至關重要的組件;通過使用仿真和簡介工具,我們可以確定軟件瓶頸。適合于硬件加速的備選操作有:允許多個順序操作合并,以便由一組輸入產生一組輸出的操作;允許你對一組獨立輸入進行并行計算以產生獨立輸出的操作。
      在確定哪種代碼要加速并決定是否將加速作為定制指令或協處理器來實現之后,設計師必須創建硬件設計。一些工具(將由本項目第二部分探討)有助于由源代碼直接生成硬件加速或使這一過程自動化。設計師如果手工實現加速模塊,就要生成VHDL或Verilog文件。然而,如果他們正在使用Tensilica公司的工具套件,那就要通過TIE組件創建加速指令/模塊。
      為了使用新的(或修改的)加速邏輯,設計師需要在協同仿真工具中將這種加速邏輯實例化并修改算法軟件。使用一個定制指令可能涉及到在原始代碼中插入或代入編譯程序固有的特性或在線匯編語句。為了訪問一個定制協處理器或外設,設計師可能需要增加使用驅動器或API的代碼。在重新構建系統之后,設計師要對系統進行協同仿真并對性能和行為進行簡介。這個過程要反復進行,有可能對以前實現的加速邏輯進行改進,直到系統設計達到性能指標為止。這一過程中的下一個步驟是使用驗證測試程序驗證加速邏輯RTL的功能,隨后進行門電路一級的定時驗證。如果測試表明設計達到了所有的功能要求和設計要求,設計師就可以繼續進行剩余的硬件流程。
      開發工具正在不斷演進之中,從而使可互換的硬件和軟件模塊可供不具備硬件背景的設計師使用。要使使用性能更佳的硬件實現方法而不使用軟件實現方法的決定符合應用需求。如果對軟件算法進行簡化也符合要求,則設計師就可能不希望發生重復產生硬件成本。例如,如果設計師在其系統中有未使用的存儲器,則構建一個查尋表就可防止實現硬件加速器資源的額外成本發生。另一方面,設計師還能利用硬件加速來降低系統總成本,同時,實現一個運行時可重配置系統可能會產生更大的成本效益(參見附文《可重新配置的加速》)。



      參考文獻
      A. Danek, M, P Honzik, J Kadlec, R Matsousek, Z Pohl, “Reconfigurable System-on-a-Programmable-Chip Platform,” Seventh IEEE Workshop on Design and Diagnostics of Electronic Circuits and Systems, April 2004.
      -------------------------------------------------------------------------------------------
      附文一:性能比較
      本次實踐項目的早期計劃階段,EDN考慮過比較同一種算法在各種體系結構上的加速差異。但是,由于沒有那種應用空間對于每一種體系結構來說是通用的,而且可能很快就會變成一種蘋果與桔子的比較,所以我們放棄了這種想法。
      接下來我們想到了比較和論述每種系統在其前后的性能參數。不過,盡管這種比較可能有用,卻也容易得出不完整和不恰當的結論。例如,在使用Atmel的產品加速CRC(循環冗余校驗)算法時,硬件實現的算法執行速度比原來的軟件實現快23倍。軟件實現是一種循環驅動CRC,而與表驅動CRC來比較加速差異就降低了性能比較的價值。經過更長的時間和更大的努力,我們可以改善硬件實現的性能。類似的情況對于每一種加速工作都存在。
      值得注意的是,不要將壞情況的軟件實現與情況的硬件實現相比較。在測量硬件性能時,它是一個獨立執行部件,而軟件性能則是一個更大整體的一部分。例如,存儲器構成,或處理器高速緩存的容量大小,或者寄存器文件,都會對一種算法的性能產生影響;因此,一些系統支持對這些類型的體系結構特性的可配置性。                                                                                                                                要避免為了補償在不合適的處理器體系結構上執行的軟件而實施硬件加速,這一點非常重要。例如,無論處理器包含MAC(乘法/累加)單元還是具有適宜的數據總線結構,都會對一個信號處理算法的軟件性能產生重大影響。我們在Tensilica公司取得的經驗可以使大家理解這一點,當時我們實現了一個5操作數加法器,要求的數據比總線結構在一個時鐘周期內能夠支持的更多。另一個例子是在一個微處理器上實現流式DSP功能,該微處理器包含硬件MAC單元但不能處理流式數據負載。
      -----------------------------------------------------------------------------------------
      附文二:可重新配置的加速
      可重新配置的平臺是縮小設計尺寸并降低設計成本的一種方法,而且它允許設計人員在一個嵌入式設計中用軟件實現使用硬件加速器的好處。一些系統(包括來自Morpho Technologies公司的一種系統)可以在一個時鐘周期內重新配置其邏輯,以便對特定作業進行加速。一些基于FPGA的系統可以支持系統的運行時重配置;不過,其重配置需要多個時鐘周期。
      Reconf項目 (www.reconf.org) 正在力圖證明一個針對動態FPGA重配置的透明基礎結構(參考文獻A)。這種努力不僅解決了FPGA器件的實際動態再配置性,而且提供了必要的開發工具支持。Atmel公司的AT94K FPSLIC(現場可編程系統級集成電路)就是針對當前項目的示范器件。它支持運行時重配置,這依賴于其重配置部分FPGA而不影響器件其它部分工作的能力。Atmel公司的Figaro設計實現工具本來并不支持部分重配置,因此,為了針對各種必要的協處理器范圍,該項目規定了生成比特流的一個特殊的實現規程。
      為了訪問并使用這些協處理器中的每一個(在本例中為不同的浮點運算),應用軟件調用一個CallFPGA函數。由于FPGA太小而無法同時容納所有運算,FPGA利用一種在該FPGA包含一個重新配置控制器的基礎結構在50毫秒之內按需重新配置協處理器。
      同樣,Stretch公司的ISEF(指令集擴展結構)也支持運行時重新配置,其方法是將該ISEF劃分為兩個可動態裝載的部分。這種設置使得該器件能夠在很多時鐘周期內對ISEF的一部分進行重新配置,同時該器件的其余部分繼續正常工作。
      Reconf的示范和Stretch公司的產品說明了一位不熟悉數字電路設計的應用編程人員如何能夠在依賴處理器的可編程邏輯結構中利用多種加速運算。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 日韩国产在线播放 | 亚洲综合一区二区三区四 | 在线人成免费视频69国产 | 日本少妇喷水高清 | 日韩欧美tv一区二区在线观看 | 亚洲国产品综合人成综合网站 |