基于數(shù)字語音解碼器的低功耗設(shè)計(jì)方案
近年來,隨著個(gè)人手持多媒體設(shè)備的快速增長(zhǎng),低功耗設(shè)計(jì)變得越來越重要,甚至成為決定產(chǎn)品是否成功的關(guān)鍵,如筆記本電腦、PDA、移動(dòng)電話等時(shí)尚消費(fèi)和商務(wù)類電子產(chǎn)品,對(duì)電池的供電時(shí)間要求越來越高,高功耗成為延長(zhǎng)電池使用時(shí)間突出的制約因素。
本文引用地址:http://2s4d.com/article/201610/306719.htmCMOS數(shù)字電路的功耗主要由3部分組成:跳變功耗、短路功耗和靜態(tài)漏電功耗。其中占系統(tǒng)功耗比例大于90%的為跳變功耗,也稱動(dòng)態(tài)功耗。對(duì)于SoC而言,所有的設(shè)計(jì)方法都是圍繞著動(dòng)態(tài)功耗來進(jìn)行。如何從各個(gè)層次、各個(gè)方面盡量減少動(dòng)態(tài)功耗,將是語音解碼設(shè)計(jì)中的重點(diǎn)內(nèi)容。
1 語音解碼器的低功耗設(shè)計(jì)策略
SoC低功耗的設(shè)計(jì)應(yīng)該從頂層到底層各個(gè)階段進(jìn)行優(yōu)化設(shè)計(jì)的工作,主要運(yùn)用各級(jí)的低功耗策略,通常在系統(tǒng)級(jí)、算法級(jí)、結(jié)構(gòu)級(jí)、電路級(jí)、布局布線以及制造工藝等層次上綜合考慮。有研究表明,除了制造工藝外,高抽象層次(系統(tǒng)級(jí)、算法級(jí)、結(jié)構(gòu)級(jí))的設(shè)計(jì)因素對(duì)功耗的影響比其他層次要大的多。因此系統(tǒng)級(jí)、算法級(jí)、結(jié)構(gòu)級(jí)的低功耗設(shè)計(jì)技術(shù)的研究非常重要。
1.1 系統(tǒng)級(jí)的低功耗設(shè)計(jì)策略
降低系統(tǒng)級(jí)的功耗實(shí)際上是減少動(dòng)態(tài)功耗。主要方法是時(shí)鐘采用Power-down管理模式,在SoC處于空閑狀態(tài)時(shí),使SoC運(yùn)作于休眠狀態(tài)(只有部分設(shè)備處于工作之中);在預(yù)設(shè)時(shí)間到來時(shí),產(chǎn)生一個(gè)中斷,由該中斷喚醒其他設(shè)備;或采用門生時(shí)鐘技術(shù)停掉未工作模塊的時(shí)鐘,從而降低系統(tǒng)功耗。
另外,多時(shí)鐘設(shè)計(jì)也是降低系統(tǒng)功耗的有效方法,即讓運(yùn)算量小的模塊采用低頻率時(shí)鐘;而運(yùn)算量大的模塊使用高頻率時(shí)鐘。
本設(shè)計(jì)綜合使用了上述設(shè)計(jì)策略以降低系統(tǒng)功耗。使用一個(gè)系統(tǒng)主頻,通過對(duì)時(shí)鐘的精細(xì)控制,即時(shí)鐘使能禁止以控制模塊的工作狀態(tài);使用雙向不交疊時(shí)鐘技術(shù),提高運(yùn)算量大的模塊的操作頻率,同時(shí)消除了競(jìng)爭(zhēng)與冒險(xiǎn)的可能。雙向不交疊時(shí)鐘由系統(tǒng)時(shí)鐘Cp分為2個(gè)不交疊的時(shí)鐘,yCp和zCp,如圖1所示在運(yùn)算時(shí),由yCp時(shí)鐘控制輸入數(shù)據(jù),由zCD時(shí)鐘控制取出結(jié)果。
1.2 算法級(jí)低功耗設(shè)計(jì)策略
算法級(jí)低功耗設(shè)計(jì)主要在于軟件代碼的優(yōu)化,減少由于算法的低效率引起的不必要功耗。一方面是對(duì)標(biāo)準(zhǔn)C代碼的優(yōu)化。C語言具有易讀性、可移植性,但是C語言在實(shí)際工程應(yīng)用中,不便于對(duì)系統(tǒng)硬件資源的直接控制,無法發(fā)揮SoC的特點(diǎn)。用匯編語言編程,可以根據(jù)芯片自身硬件結(jié)構(gòu)特點(diǎn),對(duì)匯編程序進(jìn)行優(yōu)化與精簡(jiǎn),往往能夠使一些復(fù)雜的算法和功能模塊在實(shí)時(shí)處理方面取得非常好的效果。另一方面分析了影響執(zhí)行效率的數(shù)據(jù)相關(guān)、控制相關(guān)和資源沖突等因素后,在手工匯編的基礎(chǔ)上充分挖掘算法的潛力,最大限度發(fā)揮硬件性能,以達(dá)到實(shí)時(shí)要求和低功耗設(shè)計(jì)的指標(biāo)。
在本設(shè)計(jì)里主要根據(jù)SoC平臺(tái)的資源和指令集特點(diǎn),使用軟硬件協(xié)同設(shè)計(jì)方法在C代碼轉(zhuǎn)化為匯編代碼時(shí),通過分析標(biāo)準(zhǔn)C算法發(fā)現(xiàn),大部分循環(huán)和函數(shù)的調(diào)用存在冗余,頻繁的函數(shù)調(diào)用操作(壓棧出棧)占用了CPU的部分處理時(shí)間。在匯編代碼中可以通過循環(huán)展開以減少不必要的循環(huán)判斷,其基本原則的原始代碼為:普通的單循環(huán),一個(gè)周期執(zhí)行一次乘累加(MAC)指令,優(yōu)化后進(jìn)行了4次循環(huán)展開。在優(yōu)化后的代碼中,4個(gè)MAC被同時(shí)使用,并且在作乘累加時(shí),提取下次運(yùn)算的數(shù)據(jù),消除了流水線等待,充分應(yīng)用了硬件資源,提高了效率。除了循環(huán)展開,在某些情況下進(jìn)行循環(huán)合并也可提高效率。主要原因是每個(gè)循環(huán)體均需要有控制指令,減少循環(huán)的個(gè)數(shù)自然會(huì)減少控制指令的條數(shù)。注意兩個(gè)合并的循環(huán)必須有相同的循環(huán)數(shù)。
對(duì)于在代碼里多次用到的函數(shù),應(yīng)考慮用調(diào)用指令,這樣可以大大減少代碼的體積;而對(duì)于只調(diào)用少次的函數(shù),則宜嵌入主函數(shù)中,因?yàn)樗粌H可以減少傳參過程中的指令,而且可以減少調(diào)用函數(shù)的壓棧出棧操作。當(dāng)然,對(duì)于一些大而復(fù)雜的函數(shù),雖然它只被調(diào)用1次,但由于寄存器的數(shù)目有限,如果考慮直接嵌入主函數(shù),可能要頻繁地做push和pop操作,反而得不償失,這時(shí)就應(yīng)該用調(diào)用指令。
如果有些處理比較復(fù)雜,在整個(gè)解碼過程中運(yùn)算量大且耗時(shí)長(zhǎng),有必要設(shè)計(jì)相關(guān)硬件協(xié)處理器,通過匯編指令直接操作協(xié)處理器,既可以提高效率減少運(yùn)算量也有利于控制功耗,但成本會(huì)增加。這種處理方法在實(shí)時(shí)影響明顯的模塊尤其關(guān)鍵和有效。例如在MP3的解碼中,通過增加矩陣乘法器以提高子帶綜合濾波的處理速度,取得明顯效果:可減少運(yùn)算時(shí)間91%。這種軟硬件協(xié)同的設(shè)計(jì)手段在語音解碼器中多處用到。
在算法級(jí)中還涉及其他方面的低功耗設(shè)計(jì),如減少存儲(chǔ)器的存取次數(shù),縮短片選信號(hào)的寬度等方面的考慮,本設(shè)計(jì)也做了相應(yīng)的處理??偟恼f來,算法級(jí)的優(yōu)化設(shè)計(jì)在降低系統(tǒng)功耗方面潛力大,對(duì)降低整個(gè)語音解碼器的功耗具有重要意義。
評(píng)論