如何編寫電力實時應(yīng)用的運行在DSP上的高效C代碼
摘要:數(shù)字信號處理器(DSP)因其出色的處理能力,在包括電力應(yīng)用在內(nèi)的各個領(lǐng)域得到十分廣泛的應(yīng)用。為了滿足電力應(yīng)用的高實時性的要求,需要為DSP編寫高效的代碼。目前對DSP進行程序設(shè)計時,使用得最多的是C語
準(zhǔn)庫函數(shù)中所使用的數(shù)組操作方式。也許指針方式在很多時候比下標(biāo)方式來得更方便,然而下標(biāo)方式比指針方式具有更高的效率。因此,在DSP程序設(shè)計中在能使用下標(biāo)方式的地方盡量使用下標(biāo)方式。
例如下面一個初始化數(shù)組的函數(shù),用指針方式寫成:
void InitArray(int *array, int arrayLenth)
{
int n;
for(n=0;n<arrayLength;n++)
{
*array++=0;
}
}
用下標(biāo)方式寫成:
void InitArray(int *array, int arrayLenth)
{
int n;
for(n=0;n<arrayLength;n++)
{
array[n]=0;
}
}
用下標(biāo)方式寫成的函數(shù),其執(zhí)行的時間效率要比用指針方式寫成的函數(shù)高很多。
3.2.2 少用判斷語句和分支語句
判斷語句和分支語句的使用會打斷流水線,因而嚴(yán)重降低程序的執(zhí)行效率。從DSP的匯編指令集中可以看得很清楚,一條同時完成乘法和加法的復(fù)雜指令只需要DSP的一個指令周期,而一條簡單的條件跳轉(zhuǎn)指令則需要DSP的六條指令周期【4】【5】。究其原因,條件跳轉(zhuǎn)語句將打斷流水線。在C代碼中,if…else…語句和switch…case…語句都屬于條件跳轉(zhuǎn)語句。因此,判斷語句和分支語句的使用會降低代碼的時間效率,要盡量少用。
在實際操作時,可以通過各種方法來避免判斷語句和分支語句的使用,用其他代碼取而代之。例如下面的返回最大值的函數(shù),如果使用判斷語句,函數(shù)一般寫成如下形式:
int MaxOfTwo(int a, int b)
{
if(a>b)
{
return a;
}
else
{
return b;
}
}
我們可以改寫這個函數(shù)以避免判斷語句的使用,改寫后的函數(shù)如下:
int MaxOfTwo(int a, int b)
{
unsigned int c;
c=a<b;
return (a-c*(a-b));
}
改寫后的函數(shù)比改寫前的函數(shù)具有更高的時間效率。
3.2.3 register關(guān)鍵字的使用
在多數(shù)DSP程序設(shè)計中,都允許使用register關(guān)鍵字【2】。它的作用就在于將register關(guān)鍵字所修飾的變量放在DSP的寄存器中,而不是放在片內(nèi)存儲器中。由于DSP對寄存器的訪問速度比對片內(nèi)存儲器的訪問速度還要快,因此提高了代碼的時間效率。特別是作為循環(huán)的計數(shù)變量,更需要放入寄存器中。例如前面提到的初始化數(shù)組的函數(shù),如果寫成:
void InitArray(int *array, int arrayLenth)
{
register int n;
for(n=0;n<arrayLength;n++)
{
array[n]=0;
}
}
則變量n將被放入寄存器。雖然多數(shù)DSP編譯器的自動優(yōu)化功能有時候會根據(jù)自己的判斷自動將一些沒有進行register修飾的變量放入寄存器,但是編譯器的選擇往往不是最明智的,需要人為添加register修飾詞。如果register變量太多,以至于寄存器的數(shù)目不夠,編譯器會忽視一部分register修飾詞,因此不會造成程序的錯誤。但這不代表所有的變量都可以放入寄存器中。為

責(zé)任編輯:和碩涵
免責(zé)聲明:本文僅代表作者個人觀點,與本站無關(guān)。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實,對本文以及其中全部或者部分內(nèi)容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,并請自行核實相關(guān)內(nèi)容。
我要收藏
個贊
-
現(xiàn)貨模式下谷電用戶價值再評估
2020-10-10電力現(xiàn)貨市場,電力交易,電力用戶 -
PPT | 高校綜合能源服務(wù)有哪些解決方案?
2020-10-09綜合能源服務(wù),清潔供熱,多能互補 -
深度文章 | “十三五”以來電力消費增長原因分析及中長期展望
2020-09-27電力需求,用電量,全社會用電量
-
PPT | 高校綜合能源服務(wù)有哪些解決方案?
2020-10-09綜合能源服務(wù),清潔供熱,多能互補 -
深度文章 | “十三五”以來電力消費增長原因分析及中長期展望
2020-09-27電力需求,用電量,全社會用電量 -
我國電力改革涉及的電價問題
-
電化學(xué)儲能應(yīng)用現(xiàn)狀及對策研究
2019-08-14電化學(xué)儲能應(yīng)用 -
《能源監(jiān)測與評價》——能源系統(tǒng)工程之預(yù)測和規(guī)劃
-
《能源監(jiān)測與評價》——能源系統(tǒng)工程之基本方法
-
貴州職稱論文發(fā)表選擇泛亞,論文發(fā)表有保障
2019-02-20貴州職稱論文發(fā)表 -
《電力設(shè)備管理》雜志首屆全國電力工業(yè) 特約專家征文
2019-01-05電力設(shè)備管理雜志 -
國內(nèi)首座蜂窩型集束煤倉管理創(chuàng)新與實踐
-
人力資源和社會保障部:電線電纜制造工國家職業(yè)技能標(biāo)準(zhǔn)
-
人力資源和社會保障部:變壓器互感器制造工國家職業(yè)技能標(biāo)準(zhǔn)
-
《低壓微電網(wǎng)并網(wǎng)一體化裝置技術(shù)規(guī)范》T/CEC 150
2019-01-02低壓微電網(wǎng)技術(shù)規(guī)范
-
現(xiàn)貨模式下谷電用戶價值再評估
2020-10-10電力現(xiàn)貨市場,電力交易,電力用戶 -
建議收藏 | 中國電價全景圖
2020-09-16電價,全景圖,電力 -
一張圖讀懂我國銷售電價附加
2020-03-05銷售電價附加