當(dāng)前位置:首頁 > 電源 > 數(shù)字電源
[導(dǎo)讀]XScale是一款具有高性能、低功耗特性的ARM兼容嵌入式微處理器架構(gòu)。XScale引入了多種硬件特性提高其處理能力,但也給應(yīng)用程序的優(yōu)化帶來了困難。本文介紹XScale體系結(jié)構(gòu)的特點(diǎn),從開發(fā)工具選擇、系統(tǒng)設(shè)計和編程開發(fā)等多個角度討論對XScale應(yīng)用程序進(jìn)行優(yōu)化的策略和技術(shù)。

    摘要:XScale是一款具有高性能、低功耗特性的ARM兼容嵌入式微處理器架構(gòu)。XScale引入了多種硬件特性提高其處理能力,但也給應(yīng)用程序的優(yōu)化帶來了困難。本文介紹XScale體系結(jié)構(gòu)的特點(diǎn),從開發(fā)工具選擇、系統(tǒng)設(shè)計和編程開發(fā)等多個角度討論對XScale應(yīng)用程序進(jìn)行優(yōu)化的策略和技術(shù)。

    關(guān)鍵詞:XScale 編譯優(yōu)化 優(yōu)化策略ARM

引言

XScale體系結(jié)構(gòu)是采用Intel Pentium技術(shù)實(shí)現(xiàn)的ARM兼容的嵌入式微處理器架構(gòu),并對ARM體系結(jié)構(gòu)進(jìn)行了增強(qiáng),具有業(yè)界領(lǐng)先的高性能和低功耗特性被廣泛應(yīng)用于消費(fèi)電子、無線通信、多媒體和網(wǎng)絡(luò)交換等嵌入式應(yīng)用領(lǐng)域。XScale引入了一系列高性能微處理器的設(shè)計技術(shù),總體性能顯著地超出同主頻的ARM微處理器。然而,由于受功耗、成本和體積等因素的制約,嵌入式微處理器的處理能力與桌面系統(tǒng)相比仍存在較大差距。通常需要對嵌入式應(yīng)用程序進(jìn)行性能優(yōu)化,以滿足嵌入式應(yīng)用的性能需求。

業(yè)界對嵌入式系統(tǒng)的性能優(yōu)化進(jìn)行了很多研究與實(shí)踐。文獻(xiàn)為XScale優(yōu)化編譯器的設(shè)計提供了多種優(yōu)化技術(shù),也可用于一些應(yīng)用程序的手工優(yōu)化;文獻(xiàn)從應(yīng)用程序編程的角度討論了ARM嵌入式系統(tǒng)軟件設(shè)計優(yōu)化技術(shù);文獻(xiàn)討論了提高C/C++嵌入式應(yīng)用程序性能的一些技巧,其中多數(shù)技術(shù)可以由優(yōu)化編譯器中實(shí)現(xiàn)。

本文在總結(jié)XScale優(yōu)化編譯器設(shè)計和XScale嵌入式系統(tǒng)設(shè)計開發(fā)工作的基礎(chǔ)上,從系統(tǒng)設(shè)計、開發(fā)工具選擇、編譯優(yōu)化和編程開發(fā)等角度討論和提出了XScale應(yīng)用程序的優(yōu)化策略和技術(shù)。

1 XScale體系結(jié)構(gòu)

XScale微架構(gòu)引入了Pentium處理器工藝和系統(tǒng)結(jié)構(gòu)技術(shù),實(shí)現(xiàn)了Pentium微處理器體系結(jié)構(gòu)的一系列高性能技術(shù),達(dá)到了高性能、低功耗和小體積等嵌入式系統(tǒng)要求的特性。

(1)超流水線

Xscale的超流水線(SuperPipeline)技術(shù),如圖1所示,由整數(shù)處理(integer)、乘加(MAC)和存儲(memory)3條流水線組成。3條流水線的長度是6到9段,前4到5段共享,后面分支部分并行工作可有效提高處理器性能。

(2)高主頻

采用Pentium工藝技術(shù),XScale主頻可以超出普通ARM微處理器主頻數(shù)倍,在保持較低能量消耗的前提下,高達(dá)600MHz以上。如PXA27X的主頻可高達(dá)724MHz。

(3)存儲體系

XScale實(shí)現(xiàn)了一個高效的存儲器體系結(jié)構(gòu),為其超流水線的高效運(yùn)行提供數(shù)據(jù)資源。XScale存儲體系功能主要包括32KB D-Cache、32KB I-Cache、2KB Mini Dcache、Fill Buffers、ending Buffers以及4.8GB/s帶寬的存儲總線,使處理器可以高效訪問存儲器。

(4)分支預(yù)測

XScale實(shí)現(xiàn)了基于統(tǒng)計分析的分支預(yù)測功能部件,減少由于分支轉(zhuǎn)移沖刷指令流水線的次數(shù),也有效地提高了處理器的性能。

(3)指令集體系結(jié)構(gòu)

針對ARM數(shù)據(jù)處理能力的不足,XScale對ARM的乘加邏輯進(jìn)行了增強(qiáng),增加了8條DSP指令。XScale處理器還可集成Flash閃存和無線MMX邏輯功能。這些特性有效地提高了XScale數(shù)據(jù)處理能力。帶有無線MMX的PXA27X在312MHz主頻運(yùn)行處理多媒體應(yīng)用時,其性能與520MHz ARM處理器相當(dāng)。

(6)省去不常用的邏輯功能

為了節(jié)省處理器芯片體積和降低運(yùn)行功耗,XScale體系結(jié)構(gòu)沒有實(shí)現(xiàn)昂貴的浮點(diǎn)運(yùn)算部件和除法部件。這些是嵌入式應(yīng)用中不常用的運(yùn)算。當(dāng)需要這類運(yùn)算時,可以通過軟件方法實(shí)現(xiàn)。

XScale復(fù)雜的體系結(jié)構(gòu)給嵌入式應(yīng)用程序的優(yōu)化帶來了更大的困難。

2 性能優(yōu)化技術(shù)

XScale處理器性能的發(fā)揮很大程度上依賴于應(yīng)用程序的優(yōu)化技術(shù)。XScale嵌入式應(yīng)用系統(tǒng)的性能優(yōu)化可以下幾個方面考慮。

2.1 算法結(jié)構(gòu)優(yōu)化

實(shí)現(xiàn)某種應(yīng)用功能通??刹捎枚喾N算法或方法,不同算法的復(fù)雜度和效率差別很大。選擇一種高效的算法或?qū)λ惴ㄟM(jìn)行優(yōu)化,可以使應(yīng)用程序獲得最大的優(yōu)化性能。常用的優(yōu)化技術(shù)有以下幾種。

(1)選擇高效算法

如果算法效率低下,再快的處理器也會顯得不夠有,而一個高效的算法卻可以彌補(bǔ)處理器性能的不足。

考慮從已排序好的n個元素a[0:n-1]中找出某一特定元素x。如果采用順序搜索方式,從a[0]到a[n-1]逐個比較這n個元素,需要O(n)次比較。而如果采用二分搜索方法,則僅需O(logn)次比較。當(dāng)n為2 31時,前一算法平均需要比較2 31次,后一算法平均僅需比較31次。兩者所需時間相差達(dá)10 8倍。

(2)遞歸算法非遞歸化

采用遞歸過程實(shí)現(xiàn)算法具有結(jié)構(gòu)清晰、程序簡練易讀、正確性容易證明的特點(diǎn);但遞歸算法通常需要執(zhí)行大量的過程調(diào)用,并在堆棧中保存所有返回過程的局部變量,效率往往較低。當(dāng)應(yīng)用程序存在性能問題時,使用循不迭代方法將遞歸算法轉(zhuǎn)換成非遞歸算法往往可以使程序性能提高數(shù)倍。文獻(xiàn)對八皇后問題和Fibonacci數(shù)列的遞歸算法與非遞歸算法進(jìn)行了性能比較試驗,結(jié)果如表1所列。

表1 遞歸算法和非遞歸算法的性能對比

問題 遞歸算法時間/s 非遞歸算法時間/s 加速比/倍
八皇后問題(最大棧深度為12) 100 20 5
Fibonacci數(shù)列(n=40) 50 1 50

算法優(yōu)化是首選的優(yōu)化技術(shù)。

2.2 編譯優(yōu)化

隨著編譯技術(shù)的成熟,很多編譯器都實(shí)現(xiàn)了較強(qiáng)的代碼優(yōu)化功能,可在編譯過程中自動對應(yīng)用程序進(jìn)行優(yōu)化,改進(jìn)一些不合理的結(jié)構(gòu),生成效率較高的目標(biāo)代碼。

多數(shù)編譯器都可基于數(shù)據(jù)流分析實(shí)現(xiàn)別名分析、常數(shù)拆疊、常數(shù)傳播、公共子表達(dá)式消除、冗余代碼和死碼刪除、循環(huán)不變量的移動、循環(huán)逆轉(zhuǎn)、循環(huán)展開、函數(shù)嵌入等與體系結(jié)構(gòu)無關(guān)的優(yōu)化。

GNU gcc、WindRiverdiab、Intl XScale Compiler等常見編譯器都針對XScale體系結(jié)構(gòu)進(jìn)行了優(yōu)化設(shè)計,可以有效地利用XScale/ARM指令的條件執(zhí)行、條件設(shè)置和操作數(shù)移位等功能,使一條指令完成多個操作,縮短指令序列的長度;減少跳轉(zhuǎn)指令的數(shù)目,減少沖刷流水線的次數(shù);按照XScale超流水線要求,利用3地址指令、多字傳送指令、DSP乘加指令和MMX指令等,生成高效的指令序列,提高應(yīng)用程序的性能。

一些優(yōu)化編譯器可借用并行程序設(shè)計技術(shù),進(jìn)行相關(guān)性分析,獲得源程序的語義信息,采用軟件流水線、數(shù)據(jù)規(guī)劃、循環(huán)重構(gòu)等技術(shù),使應(yīng)用程序呈現(xiàn)更好的局部性,提高Cache命中率,從而提高計算密集型應(yīng)用程序的性能。對于矩陣計算等計算密集型程序,一些高性能優(yōu)化編譯器生成的代碼可以高出普通編譯器產(chǎn)生的代碼十倍之多。

應(yīng)用程序開發(fā)過程中應(yīng)該充分利用編譯器的代碼優(yōu)化功能,在編碼時將主要精力集中在業(yè)務(wù)邏輯算法流程的設(shè)計上,提高編程效率和代碼可讀性。

2.3 編程優(yōu)化

編譯優(yōu)化是靜態(tài)優(yōu)化。優(yōu)化編譯器可以自動完成程序段和代碼塊范圍內(nèi)的優(yōu)化問題,但編譯器很難獲取程序語義信息、算法流程和程序運(yùn)行狀態(tài)信息。很多情況下也需要編譯人員以某種方式將程序運(yùn)行狀態(tài)信息傳遞給編譯器,或進(jìn)行手工優(yōu)化。以下是常用的編譯優(yōu)化技術(shù)。

    (1)使用inline函數(shù)

多數(shù)編譯器支持inline關(guān)鍵字。如果一個函數(shù)被設(shè)計成一個inline函數(shù),那么在調(diào)用它們的地方將會用函數(shù)體來替代函數(shù)調(diào)用語句,這樣將會徹底省去函數(shù)調(diào)用的開銷。使用inline的最大缺點(diǎn)是函數(shù)在被多處調(diào)用時,代碼量將增大。

(2)減少函數(shù)調(diào)用參數(shù)

根據(jù)ARM過程調(diào)用規(guī)范,4個以下的形參通過寄存器傳遞,第5個以上的形參通過存儲器棧傳遞。顯然,通過存儲器棧傳送參數(shù)的開銷較大。函數(shù)調(diào)用形參限制在4個以內(nèi),可以降低函數(shù)調(diào)用的開銷。

(3)在Switch是一種使用普通的編程技術(shù)。編譯器為之產(chǎn)生if-else-if嵌套代碼,并按照順序進(jìn)行比較,發(fā)現(xiàn)匹配則跳到滿足條件的語句執(zhí)行。編程時,根據(jù)發(fā)生的相對頻率排序,將最可能發(fā)生的情況放在第一位,最不可能的情況放在最后一位,可以提高Switch語句塊的執(zhí)行速度。

實(shí)際上,程序中if條件的處理也有類似的特性。

(4)避免使用C++的昂貴功耗

C++在支持軟件工程、面向?qū)ο蟪绦蛟O(shè)計、結(jié)構(gòu)化對C進(jìn)行卓有成效的改進(jìn),但在代碼尺寸、執(zhí)行速度等方面比C語言差一些。C++的類機(jī)制與C語言的結(jié)構(gòu)差別不大,但C++的多重繼承、虛擬基類、模板和運(yùn)行類型識別等特性對代碼尺寸和運(yùn)行效率有負(fù)面影響。對這些功能要慎重使用,可以通過試驗測試其影響的大小。

(5)減少或避免執(zhí)行耗時的操作

應(yīng)用程序的主要執(zhí)行時間通常花費(fèi)在關(guān)鍵路徑代碼段或程序模塊,關(guān)鍵路徑程序模塊往往包含循環(huán)或嵌套循環(huán)。減少循環(huán)或內(nèi)層循環(huán)中昂貴操作的執(zhí)行頻率可以顯著地提高應(yīng)用程序的效率。常見的耗時操作有:I/O操作、文件訪問、圖形界面操作和系統(tǒng)調(diào)用等。

表2列出了XScale常見的I/O處理、系統(tǒng)調(diào)用和文件訪問等昂貴操作的代價。

表2 XScale常見最昂貴操作的代碼

操作類型 代價(時鐘周期/個)
sprintf 828
fprintf 540
fread 552
fwrite 864
write 216
Read 216
除法 112
atoi 596

對于文件訪問等操作,每次讀入和寫出一個較大的數(shù)據(jù)塊,或使用內(nèi)存映射技術(shù)訪問文件,可以減少相關(guān)系統(tǒng)調(diào)用執(zhí)行的次數(shù),從而提高程序執(zhí)行的性能。下面是一個使用這種優(yōu)化技術(shù)的示例。

優(yōu)化前代碼:

int data_in,int data_out;

int file_in,file_out;

for(;;){

read(file_in,data_in,1);

data_out=decode(&data_in);

write(file_out,&data_out,1);

}

優(yōu)化后代碼:

int data_in[1024],

int data_out[1024];

int file_in,file_out;

for(;;){

read(file_in,data_in,1024);

}

(6)用查表代替計算

在處理器資源緊張和存儲器資源相對富余的情況下,可以用犧牲存儲空間換取速度的方法。例如需要頻繁計算正弦和余弦等函數(shù)數(shù)值時,可預(yù)先將函數(shù)值計算出來,置于內(nèi)存,供以后查找。

2.4 高性能開發(fā)工具

應(yīng)用程序的可執(zhí)行代碼通常由編譯器編譯產(chǎn)生的目標(biāo)代碼和鏈接程序從系統(tǒng)庫提取的庫例程兩部分組成。

選擇一種優(yōu)化能力強(qiáng)的編譯器和開發(fā)工具可以生成更加高效的代碼。WindRiver Diab、GNU gcc、GNUpro和Intel XScale Compiler都針對XScale體系結(jié)構(gòu)進(jìn)行了優(yōu)化。

嵌入式應(yīng)用程序通常包含大量的系統(tǒng)函數(shù)調(diào)用。在XScale平臺上的測試結(jié)果表明:MediaBench的應(yīng)用程序大約有50%的執(zhí)行時間花費(fèi)在系統(tǒng)庫函數(shù),選用高效的系統(tǒng)運(yùn)行庫(runtime library)也可使應(yīng)用程序的運(yùn)行效率獲得提升。如glibc庫的緩沖區(qū)的大小是newlib的數(shù)十倍,所以在處理輸入輸出操作方面具有更高的效率。

2.5 特定于XScale體系結(jié)構(gòu)的優(yōu)化

(1)避免除法

XScale沒有除法部件和整數(shù)除法指令,除法是由軟件實(shí)現(xiàn)的。軟件實(shí)現(xiàn)的除法效率很低,應(yīng)該盡可能避免除法和計算余數(shù)等運(yùn)算。有時可以將除法轉(zhuǎn)變?yōu)槌朔āO旅鎯蓚?cè)是除法操作優(yōu)化的示例。

①用關(guān)系運(yùn)算符兩邊乘除數(shù)消除除法操作

優(yōu)化前:if((x/y)>z)

優(yōu)化后:if(x>(y*z))

②將除法轉(zhuǎn)換為乘常數(shù)和移位操作

優(yōu)化前:v.x=(v1.x+v2.x+v3.x)/3

優(yōu)化后:使用常數(shù)乘數(shù)0x5555轉(zhuǎn)換成

v.x=(int)(((_int64)(v1.x+v2.x+v3.x)*

(_int64)0x55555)>>16);

(2)避免浮點(diǎn)運(yùn)算

XScale沒有實(shí)現(xiàn)浮點(diǎn)部件。浮點(diǎn)運(yùn)算是通過系統(tǒng)庫實(shí)現(xiàn)的,代價很高,通常也應(yīng)該避免,有時可以轉(zhuǎn)換成整數(shù)運(yùn)算。包含浮點(diǎn)運(yùn)算的庫例程有格式化輸入輸出(scanf/printf)等。XScale中常見浮點(diǎn)運(yùn)算的代價如表3所列。

表3 XScale常見浮點(diǎn)運(yùn)算的代價

運(yùn)算類型 代價(時鐘周期/個)
加法+ 400
乘法* 400
除法/ 560

(3)使用GPP和IPP庫

XScale的很多硬件特性是針對多媒體嵌入式應(yīng)用的特點(diǎn)而設(shè)計的,很難在編譯器中支持這些特性。為此,Intel公司對多媒體處理、圖形處理和數(shù)值運(yùn)算的一些典型操作和算法進(jìn)行了手工優(yōu)化,設(shè)計成程序庫,分別稱為GPP/IPP庫。這些庫例程可以很好地發(fā)揮XScale硬件的計算潛能,達(dá)到很高的執(zhí)行效率。用IPP庫實(shí)現(xiàn)除法和平方根的性能如圖2所示。

由圖2可以看出,使用IPP/GPP庫使相關(guān)操作的性能獲得大幅提升。

3 性能優(yōu)化策略

應(yīng)用程序的性能優(yōu)化與縮短開發(fā)周期、軟件工程和OOP的目標(biāo)之間通常存在矛質(zhì)。嵌入式系統(tǒng)需要性能優(yōu),但性能優(yōu)化需要人力物力投入,會增加開發(fā)時間,降低程序的可讀性,排斥使用新的開發(fā)工具和編程語言。而軟件工程的目標(biāo)是使用高效的開發(fā)工具。編程語言和編程規(guī)范提高程序的可讀性、可靠性,縮短開發(fā)周期,降低項目成本。為此應(yīng)該在二者之間尋找一種平衡。通??梢圆扇∫韵虏呗院驮瓌t;

①將算法結(jié)構(gòu)優(yōu)化作為首選優(yōu)化技術(shù),設(shè)計高效的應(yīng)用程序流程和算法;

②根據(jù)功能、性能差異和投資預(yù)算選擇高效的編譯器、系統(tǒng)運(yùn)行庫、圖形庫、中間件等;

③使用性能監(jiān)測工具識別占主要執(zhí)行時間的關(guān)鍵路徑程序模塊,采用一切優(yōu)化手段對關(guān)鍵路徑代碼和程序模塊進(jìn)行優(yōu)化,挖掘應(yīng)用程序性能;

④非關(guān)鍵路徑的流程控制代碼按照軟件工程的要求,采用高效率程序語言和開發(fā)工具實(shí)現(xiàn),提高設(shè)計開發(fā)效率。使用編譯器進(jìn)行優(yōu)化。

結(jié)語

XScale體系結(jié)構(gòu)按照嵌入式應(yīng)用的要求,采用Pentium系列微處理器設(shè)計技術(shù)和工藝設(shè)計的一款性能突出的ARM兼容嵌入式微處理器。XScale體系結(jié)構(gòu)引入了多種硬件特性增強(qiáng)處理器的性能,但也給應(yīng)用程序優(yōu)化帶來了挑戰(zhàn)。發(fā)揮XScale體系結(jié)構(gòu)的性能,需要操作系統(tǒng)、編譯器、運(yùn)行庫、連接程序和裝載程序等各層系統(tǒng)軟件的支持,需要在嵌入式項目的系統(tǒng)規(guī)范、開發(fā)工具選型、系統(tǒng)設(shè)計和編碼等多個階段考慮對應(yīng)用程序進(jìn)行優(yōu)化。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉