當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]采用Nios定制指令的嵌入式系統(tǒng)優(yōu)化設(shè)計(jì)

摘要:Altera公司的Nios軟核處理器以其低成本,設(shè)計(jì)靈活等特點(diǎn),在嵌入式應(yīng)用領(lǐng)域得到廣泛的應(yīng)用。采用Nios處理器的定制指令,可以把用戶自定義的功能直接添加到Nios CPU的算術(shù)邏輯單元中,加快專項(xiàng)任務(wù)的執(zhí)行,以達(dá)到優(yōu)化目的。本文在闡述Nios定制指令設(shè)計(jì)的基礎(chǔ)上,給出相應(yīng)的設(shè)計(jì)例子說明。

    關(guān)鍵詞:Nios軟核 定制指令 嵌入式處理器MP3

引言

Nios處理器是Altera公司推出的一個(gè)32/16位精簡(jiǎn)指令信處理器軟核。在Altera公司推出的軟件SOPC中加載Nios核 和相應(yīng)的外圍接口以及與定義相應(yīng)的自定義指令,然后對(duì)設(shè)計(jì)進(jìn)行綜合,下載到FPGA中就可以方便地一個(gè)具有特定功能的嵌入式處理器。這種設(shè)計(jì)思路增加了系統(tǒng)設(shè)計(jì)的靈活性,加快系統(tǒng)運(yùn)行速度,縮短產(chǎn)品研發(fā)和上市時(shí)間。

由硬件實(shí)現(xiàn)復(fù)雜的算法通常比軟件實(shí)現(xiàn)更高效。利用Altera的Niso嵌入式處理器的定制指令,可以把用戶自定義的功能直接添加到Niso CPU的算術(shù)邏輯單元(ALU)中(見圖1),來加快專項(xiàng)任務(wù)的執(zhí)行,從而達(dá)到系統(tǒng)優(yōu)化的目的。因此,設(shè)計(jì)者可以針對(duì)關(guān)鍵的內(nèi)部循環(huán)和耗時(shí)算法,創(chuàng)建Nios嵌入式處理器的定制指令,把復(fù)雜的順序指令簡(jiǎn)化為硬件實(shí)現(xiàn)的單指令,這樣就能夠大大提高系統(tǒng)性能。例如,Nios CPU執(zhí)行浮點(diǎn)乘法運(yùn)算要2800多個(gè)時(shí)鐘周期;而浮點(diǎn)乘法的定制指令采用了浮點(diǎn)單元(FPU),執(zhí)行只需19個(gè)時(shí)鐘周期。

1 定制指令

定制指令為Nios處理器的算術(shù)邏輯單元增加了定制邏輯,設(shè)計(jì)者通過定制指令,用快速高效的定制邏輯塊替代復(fù)雜耗時(shí)的軟件程序。在一個(gè)CPU中,可以運(yùn)行多達(dá)五個(gè)組合或時(shí)序定制模塊,還可以訪問Nios系統(tǒng)模塊外的存儲(chǔ)器和/或邏輯。定制邏輯模塊在兩個(gè)寄存器Ra和Rb內(nèi)容的基礎(chǔ)上執(zhí)行用戶定義的操作,結(jié)果存放在寄存器Ra中。這些定制邏輯模塊的功能只受限于器件內(nèi)邏輯單元(LE)和設(shè)計(jì)得的想象力。

定制硬件模塊能夠通過Nios嵌入式處理器指令集中的五個(gè)用戶定義操作碼來訪問。SOPC Builder在生成系統(tǒng)期間會(huì)為任何定制指令創(chuàng)建宏,通過這些自動(dòng)產(chǎn)生的C和匯編語言宏就可以方便地訪問自定義指令操作碼。

2 實(shí)現(xiàn)定制指令

以Altera的Nios2.0版嵌入式處理器為例實(shí)現(xiàn)定制指令,同時(shí)點(diǎn)擊Custom Instructions標(biāo)簽創(chuàng)建或編輯Nios CPU,如圖2。

Custom Instruction標(biāo)簽是系統(tǒng)設(shè)計(jì)都 連接定制邏輯和Nios CPU的ALU的界面。首先,選擇定制指令的操作碼,有USR0~USR4五個(gè)操作碼可供使用。然后,導(dǎo)入和掃描作為定制指令的HDL文件。Design Import Wizard掃描頂層模塊的端口,進(jìn)行合適連接。Design Import Wizard可以接受以下類型的文件:VerilogHDL/VHDL/EDIF/VQM以接受以下類型的文件:Verilog HDL、VHDL、EDIF、VQM和Altera QuartusII原理圖。導(dǎo)入設(shè)計(jì)文件之后,分配定制指令所需的CPU時(shí)鐘周期數(shù)目和定制指令名。

在系統(tǒng)生成期間,SOPC Builder工具用作ALU一部分的定制邏輯來創(chuàng)建Nios CPU,受所選的操作碼控制軟件開發(fā)包用定制指令名創(chuàng)建在C/C++和匯編語言中使用的軟件宏。這些在定制軟件開發(fā)包ince下。

圖2 定制指令設(shè)計(jì)界面

    設(shè)計(jì)者通過創(chuàng)建的軟件宏訪問定制指令。在C/C++中,宏就像函數(shù)調(diào)用一樣使用。如果使用前綴端口,就要用前綴創(chuàng)建不同的宏。例如,為浮點(diǎn)單元(FPU)創(chuàng)建兩個(gè)C/C++宏。例如,為浮點(diǎn)單元(FPU)創(chuàng)建兩個(gè)C/C++宏是:

result=nm_fpu(data,datb); //不使用前綴

result=nm_fpu_pfx(prefix,data,data); //使用前綴

在匯編語言中,宏調(diào)用USR操作碼,按標(biāo)準(zhǔn)匯指令一樣使用。如果使用前綴,那么在宏之前必須有一個(gè)PFX指令。有關(guān)用戶定義操作碼(USR0~USR4)的詳細(xì)資料可參Nios Software Development Reference Manual。

3 MP3播放器的定制指令設(shè)計(jì)

以MP3播放器設(shè)計(jì)為例,采用定制指令對(duì)設(shè)計(jì)進(jìn)行優(yōu)化。該設(shè)計(jì)通過增加兩條定制指令,就能使系統(tǒng)執(zhí)行性能提高大約3倍。圖為該MP3系統(tǒng)設(shè)計(jì)框圖。

(1)MP3解碼器

在大多數(shù)MP3播放器中,處理器是用來管理函數(shù)和傳輸數(shù)據(jù)的。專用MP3解碼器ASIC可用于執(zhí)行密集計(jì)算量的解碼和傳數(shù)據(jù)給音頻器件。本例中,Altera的Nios處理器用于完成處理控制信號(hào),傳輸數(shù)據(jù)和進(jìn)行MP3解碼。通常,MP3解碼器流程如下:

①通過IDE接口從CF(CompactFlash controler)中讀取MP3數(shù)據(jù);

②將MP3數(shù)據(jù)存入SPAM中緩存;

③對(duì)MP3數(shù)據(jù)解碼;

④將MP3邊帶合成到脈沖編碼調(diào)制(PCM)數(shù)據(jù);

⑤把PCM數(shù)據(jù)傳給脈寬調(diào)制器PWM。

此外,播放器采用MPEG Audio Decoder(MAD)進(jìn)行MP3解碼,是基于以下方面:

①100%定點(diǎn)(整數(shù))計(jì)算;

②網(wǎng)上有可利用的源碼;

③在GNU Ceneral Public License(GPL)下發(fā)布。

(2)定制指令

    我們知道在執(zhí)行MP3解碼的過程中,大量時(shí)間花費(fèi)在邊帶的合成上。因此,優(yōu)化Altera MP3的重點(diǎn)就落在函數(shù)mad_synth_frame上。我們可通過使用定制指令f_mul和DCT32來優(yōu)化該函數(shù)。

F_mul

F_mul和mad_f_mul是MAD使用的宏,用整數(shù)乘法來模擬浮點(diǎn)乘法。定義如下:

#define mad_f_mul(x,y)

((((x)+0x00002000L)>>14)×(((y)+0x00002000L))>>14)

#define f_mul(x,y)

(((x)|0x0001FFFFL) ((y)|0x0001FFFFL))

這些函數(shù)完成的功能是一組易被硬件實(shí)現(xiàn)的操作,包括移位、加法、乘法和邏輯或運(yùn)算。在Altera MP3的優(yōu)化設(shè)計(jì)中,用硬件定制指令f_mul執(zhí)行原先用軟件宏;還可利用前綴選項(xiàng),把兩個(gè)宏合為一個(gè)單定制指令。以下就是用Altera的定制指令定義(f_mul和mad_f_mul):

#define f_mul(x,y)nm_fmul((x),(y));

#define mad_f_mul(x,y)nm_fmul_pfx(1,(x),(y));

DCT32

在MP3解碼中,DCT32完成離散余弦變換。MAD軟件用優(yōu)化過的DVT來增強(qiáng)性能。從軟件角度來看,該優(yōu)化算法比起一般DCT對(duì)提高性能具有重大意義。因?yàn)闃?biāo)準(zhǔn)DCT需要1024個(gè)乘法,而用優(yōu)化后的DCT只需80個(gè)乘法。

圖4 DCT32與mad_synth_frame軟件流程

    DCT32定制指令所用硬件由Celoxica提供,它是可重配置計(jì)算方案提供商,采用了基于HandelC的設(shè)計(jì)工具。Altera的DCT32定制指令按以下特點(diǎn)設(shè)計(jì):

|①可以存儲(chǔ)32位輸入和32位輸出;

②在DCT計(jì)算時(shí),能獨(dú)立于CPU工作;

③用前綴指令接受命令

——裝入/卸載

——啟動(dòng)DCT計(jì)算

——輪詢是否完成。

因?yàn)槎ㄖ浦噶羁梢暂喸?,在DCT輸出前其它代碼可以并行運(yùn)行。當(dāng)需要DCT輸出時(shí),定制指令被查詢,看是否已完成計(jì)算。如果完成,Nios處理器卸載輸出數(shù)據(jù),同時(shí)裝入下組輸入數(shù)據(jù)。圖4給出了DCT32定制指令及mad_synth_frame的流程圖。

(3)優(yōu)化前后比較

表1給出了三種情況下完成mad_synth_frame函數(shù)的比較結(jié)果。三種情況分別是只用硬件乘法指令,單用定制指令f_mul及f_mul和DCT32共用。

從表1中可以看出,f_mul是最有效的定制指令,系統(tǒng)規(guī)模僅僅增加3%,卻減少了77%的循環(huán)數(shù)目。規(guī)模增加很小是因?yàn)閒_mul定制指令無需專用的硬件乘法器。

表1 三種情況比較

所用硬件 循環(huán)數(shù)目 邏輯元件(IE) 內(nèi)存位
只用硬件乘法 1 279 000 3 542 26 624
f_mul 293 000 3 642 26 624
f_mul和DCT32并行 231 600 4 331 30 528

DCT32指令運(yùn)行在并行模式下,比起f_mul又減少了21%的循環(huán)數(shù)目,LE資源也只增加了18.9%。

把定制指令所需的額外資源和性能增加情況與只用硬件乘法的基準(zhǔn)系統(tǒng)比較。用定制指令能減少執(zhí)行mad_synth_frame函數(shù)時(shí)所需的80%循環(huán)數(shù)目而只增加系統(tǒng)22.3%的規(guī)模。該MP3是在Nios開發(fā)面板上設(shè)計(jì)并運(yùn)行的,頻率為33MHz。在不增加時(shí)鐘頻率的情況下,所有性能符合指標(biāo)。如果需進(jìn)一步提高性能,還可通過增大時(shí)鐘頻率,加大內(nèi)存,增加指令和數(shù)據(jù)緩存等方法來實(shí)現(xiàn)。

4 結(jié)論

采用Nios定制指令,系統(tǒng)設(shè)計(jì)得能夠把一系列順序執(zhí)行的指令簡(jiǎn)化為通過硬件執(zhí)行的單個(gè)指令,從而簡(jiǎn)化系統(tǒng)軟件設(shè)計(jì)并且 加快系統(tǒng)運(yùn)行速度。同時(shí)充分利用了可編程邏輯器件通過硬件執(zhí)行速度快的優(yōu)點(diǎn),和用于控制的Nios處理器進(jìn)行了完美的結(jié)合。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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