用C語言加速程式進而加速硬體速度

來源:互聯網
上載者:User

今天的電子裝置,不管是嵌入、工業、消費、娛樂,還是通訊電子裝置,它們中的應用程式,都比過去需要在更短的時間內處理更多的資料。一般來說,開發人員通常會選用某種通用型處理器或數位訊號處理器(DSP),對那些適應性為先的應用程式來說,通用型處理器一直都是最佳的架構選擇,而同時DSP也是用於提高運算能力的首選。在許多情況中,既需要適應性,同時也需要強大的運算能力,當為了增加通用型處理器的執行能力而提高時鐘頻率時,也會帶來成本與電能消耗的增加。為滿足今日計算的要求,在這些裝置中加入了硬體加速或某些特別的輔助組件,但由此付出的代價是增加了編程的複雜性。本文將探討通過C語言,怎樣加速程式處理速度,以可配置軟體架構的方式,達到硬體加速的目的,同時我將介紹一個硬體加速有限脈衝響應(FIR)轉換器的真實案例。

以軟體配置的處理器

大多數高效能IC產品的市場都在不斷地變動,追尋更先進的標準,及滿足永遠都在變化的系統需求。基於ASIC的架構,雖然提供了所需的效能,但卻不能快速及經濟地滿足這些變化著的應用規格,因此,許多開發人員不得不轉向以軟體方式配置的架構,其可在應用型處理器中融入可程式化邏輯。

以軟體配置的架構,其優勢在於,可程式化的門電路可作為應用型處理器,有機地整合進同一流水線,而作為參考對比基於副處理器的架構,通常是使用FPGA或ASSP這樣單獨的系統組件來減輕系統負載的,這種使用副處理器的做法,帶來的是複雜的、應用上的分割,並且在應用型處理器等待結果時,造成延遲,或需實現複雜的調度機制。加之對FPGA的設計需要一個單獨的開發環境,和另一支開發隊伍,所帶來成本上的開銷也是非同一般的。

因為以軟體配置的處理器可作為應用型處理器,在同一流水線中實現了可程式化邏輯,所以,編譯器可把演算法分為硬體和軟體部分,由此也降低了相關的依賴性,其結果是,你可把"硬體"當成"軟體",並在單一開發環境中編寫代碼,使硬體和軟體更最佳化地一同工作。不需要花費巨大的開發資源來手工調校代碼,只需高亮標出運算熱點,編譯器就會以硬體的形式實現它。這些作用區作為擴充指令實現,應用型處理器可將其視為傳統的指令,並在同一流水線中執行。此處的差異在於,擴充指令可表現為成百上千條C指令,在單一刻度內高效地執行和計算。

基本FIR轉換器

FIR轉換器可把作用區以並行的方式實現,在此,我們討論的重點是對一個轉換器,怎樣通過C的實現來硬體加速,這種最佳化的理念也可應用於其他演算法。

可用以下方程式來描述一個FIR轉換器:

t=T-1
y(n)=SUM ((h(t)*x)(n-t)) for n=0,...N-1
t=0

x(n)在此是輸入訊號,y(n)是輸出訊號,h(t)是FIR轉換器係數,圖1為一個直觀的FIR函數示意圖,格子內的每一點,代表了係數h(t)與資料點x(n-t)的乘積,而每條斜線上的所有乘積全部相加才能得到輸出的y(n)。例1是對FIR轉換器一個直接用C語言的實現方法。利用此實現,一個使用T=64和N=80的64路轉換器執行完,將大約需要27230個刻度。而這種固有的並行架構,使它成為一個非常適合於實際應用中硬體加速的候選方案。

圖1:FIR函數示意圖

例1:

void fir(short *X, short *H, short *Y, int N, int T)
{
 int n, t, acc;
 short *x, *h;
 /* 轉換器輸入 */
 for (n = 0; n < N; n ) {
  x = X;
  h = H;
  acc = (*x--) * (*h );
  for(t = 1; t < T; t ) {
   acc = (*x--) * (*h );
  }
  *Y = acc >> 14;
  X ;
  Y ;
 }
}

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。