《用于 G7231 語(yǔ)音編解碼器加速的向量處理器研究》由會(huì)員分享,可在線閱讀,更多相關(guān)《用于 G7231 語(yǔ)音編解碼器加速的向量處理器研究(5頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、精品論文推薦
用于 G.723.1 語(yǔ)音編解碼器加速的向量處理器研究
邢雲(yún)峰, 桑 林 北京郵電大學(xué)電信工程學(xué)院,北京 (100876) Email: xingyunfeng@
摘 要: 編解碼時(shí)間是語(yǔ)音編解碼器的一個(gè)關(guān)鍵性能指標(biāo)。本文提出了一種利用可配置的
向量處理器來(lái)配合嵌入式處理器進(jìn)行G.723.1編碼的方法,測(cè)試結(jié)果表明,這種方式可以顯 著提高嵌入式處理器的編解碼速度。 關(guān)鍵詞:語(yǔ)音編解碼器;向量處理器;嵌入式處理器;語(yǔ)音編碼
中圖分類號(hào):TN912.32
1. 引 言
G.723.1[1]是國(guó)際電信聯(lián)盟(ITU)于1996年推出的面向多媒體通信的低碼率
2、語(yǔ)音編碼標(biāo) 準(zhǔn),采用了碼激勵(lì)線性預(yù)測(cè)(CELP) 算法,在低碼率下能達(dá)到較高的合成語(yǔ)音質(zhì)量,且算法 復(fù)雜度不太高。它最初是為可視電話而設(shè)計(jì)的,包括5.3 kb/s和6.3 kb/s兩種速率,分別采用 代數(shù)碼本激勵(lì)(ACELP)和多脈沖最大似然量化(MP-MLQ)技術(shù)。
在VOIP技術(shù)蓬勃發(fā)展的今天,為了節(jié)省IP語(yǔ)音包的帶寬占用,大多數(shù)的IP終端都支持 用G.723.1進(jìn)行語(yǔ)音編解碼。雖然ITU-T G.723.1協(xié)議提供了G.723.1語(yǔ)音編解碼器的C語(yǔ)言源 代碼,但是在實(shí)際的應(yīng)用中,由于G.723.1編碼計(jì)算量比較大,如果想通過(guò)一臺(tái)IP終端實(shí)現(xiàn) 三方通話,往往需要一片專用DSP來(lái)進(jìn)行語(yǔ)音
3、信號(hào)的處理,這樣增加了終端的成本。本文先 從分析G.723.1編解碼算法的特點(diǎn)出發(fā),然后根據(jù)G.723.1編解碼算法的特點(diǎn)設(shè)計(jì)向量處理器 來(lái)輔助嵌入式處理器進(jìn)行編解碼,最后根據(jù)實(shí)際測(cè)試結(jié)果給出結(jié)論。
1. G.723.1 算法特點(diǎn)分析
首先利用 VC++的 profile 功能對(duì) G.723.1 語(yǔ)音編解碼器的定點(diǎn) C 語(yǔ)言源代碼執(zhí)行參數(shù)為
function timing 的 profile 測(cè)試,測(cè)試結(jié)果見表 1。
表 1 未優(yōu)化代碼的 profile 測(cè)試(%)
碼率
5.3k
6.3k
L_mac
21.5
32.4
L_mult
16.9
17.
4、7
L_add
16.4
15.6
L_msu
3.9
3.8
L_shr
6.4
3.1
L_sub
1.7
1.7
L_shl
0.3
0.4
Round
0.5
0.4
mult_r
0.3
0.3
Sature
0.6
0.1
Shr
0.1
0.1
Shl
0.3
0.1
Add
0.7
0.1
Sub
0.1
0.1
合計(jì)
69.7
75.9
- 5 -
從表 1 可以發(fā)現(xiàn),在 G.723.1 語(yǔ)音編解碼算法中,表中所列的這些基本運(yùn)算占到總運(yùn)算
量的 70%左右,因此如果可以將這些基本運(yùn)
5、算拿出來(lái)單獨(dú)處理,將有可能大大減少嵌入式 處理器的編解碼時(shí)間。進(jìn)一步的分析發(fā)現(xiàn),這些基本運(yùn)算很多都出現(xiàn)在計(jì)算信號(hào)的互相關(guān), 能量,濾波等循環(huán)計(jì)算中,這種計(jì)算形式可以認(rèn)為是把一段時(shí)間的信號(hào)看作一個(gè)一定長(zhǎng)度的 向量來(lái)進(jìn)行處理,如果設(shè)計(jì)一個(gè)專用的向量處理器來(lái)進(jìn)行這種向量的運(yùn)算,將使得減少 CPU 的編解碼時(shí)間成為可能。
2. 向量計(jì)算單元數(shù)據(jù)通路設(shè)計(jì)
向量計(jì)算單元設(shè)計(jì)為一個(gè)時(shí)鐘周期完成一次乘加運(yùn)算,具體結(jié)構(gòu)如圖 1 所示。所有待計(jì) 算的向量由 CPU 事先儲(chǔ)存于內(nèi)存中,向量計(jì)算單元根據(jù) VDR 寄存器的設(shè)置從指定的地址 取得待運(yùn)算的向量,然后根據(jù) CR 寄存器的指令進(jìn)行相應(yīng)的運(yùn)算。需要指出的
6、是這里的向量 均由 16 位的定點(diǎn)數(shù)據(jù)組成。
圖 1 向量計(jì)算單元數(shù)據(jù)通路
該計(jì)算單元可以完成的向量運(yùn)算包括兩個(gè)向量相乘,一個(gè)向量乘常數(shù)再與另一個(gè)向量相 加,兩個(gè)向量相乘并將結(jié)果累加等等。這里用一個(gè)具體向量運(yùn)算指令對(duì)圖 1 進(jìn)行說(shuō)明。 指令名稱:VADDQ
指令功能:T = ( A + B * CONST16 ) >> SHIFT
T,A,B 均表示由一定長(zhǎng)度的 16 位定點(diǎn)數(shù)構(gòu)成的向量,SHIFT 表示每個(gè)計(jì)算結(jié)果右移 的位數(shù)。計(jì)算過(guò)程如下:
z 在第一個(gè)時(shí)鐘周
7、期,數(shù)據(jù) A[i]和 B[i]被放入寄存器,16 位常數(shù)寄存器記錄的常數(shù)也準(zhǔn)備 進(jìn)入乘法器.
z 在第二個(gè)時(shí)鐘周期,得到 CONST16 與 B[i]相乘的結(jié)果 b,同時(shí),A[i]被左移 15 位變?yōu)?
Q30 的數(shù) a 作為四路復(fù)用器的選擇數(shù)據(jù)(a 的第 32 位按照第 31 位進(jìn)行了符號(hào)擴(kuò)展)。
z 在第三個(gè)時(shí)鐘周期,將第二個(gè)時(shí)鐘周期得到的 a 與 b 兩數(shù)做飽和加法,記錄 Q30 和 Q31
兩個(gè)和。
z 在第四個(gè)時(shí)鐘周期,將 Q31 和右移 SHIFT 位然后進(jìn)行 16 位飽和及四舍五入變?yōu)?Q15
結(jié)果。
z 在第五個(gè)時(shí)鐘周期,將 Q15 結(jié)果寫回向量 T 所在的
8、內(nèi)存中得到 T[i]。 圖 1 各個(gè)功能塊作用解釋如下
3.1 寄存器
整個(gè)數(shù)據(jù)流可以分為 5 個(gè)階段,寄存器記錄每個(gè)階段運(yùn)算的結(jié)果。
3.2 符號(hào)擴(kuò)展
這個(gè)功能塊是用來(lái)把 16 位定點(diǎn)數(shù)通過(guò)符號(hào)位的擴(kuò)展變成 32 位定點(diǎn)數(shù),擴(kuò)展后的數(shù)據(jù)高
17 位均為符號(hào)位。
3.3 Q15 變?yōu)?Q30
這個(gè)功能塊是把 Q15 的 16 位定點(diǎn)數(shù)直接左移 15 位變?yōu)?Q30 的 32 位定點(diǎn)數(shù),最高兩位 均為符號(hào)位。
3.4 乘法器
這個(gè)功能塊是用來(lái)做兩個(gè) 16 位有符號(hào)定點(diǎn)數(shù)的乘法,結(jié)果為 32 位有符號(hào)數(shù)。
3.5 飽和加(減)法器
這個(gè)功能塊用來(lái)做飽和加減
9、法,一般情況下,當(dāng)兩個(gè)加數(shù)符號(hào)相同而和與它們的符號(hào)相 反時(shí),此時(shí)相加結(jié)果飽和,當(dāng)加數(shù)為正時(shí),和取為 0x7fffffff ,當(dāng)加數(shù)為負(fù)時(shí),和取為
0x80000000,其它情況均直接取相加結(jié)果作為最終結(jié)果。而在做減法時(shí)則相反,當(dāng)被減數(shù)和
減數(shù)符號(hào)相反而差與被減數(shù)的符號(hào)相反時(shí),此時(shí)相減運(yùn)算結(jié)果飽和,當(dāng)被減數(shù)為正時(shí),和取 為 0x7fffffff,當(dāng)被減數(shù)為負(fù)時(shí),和取為 0x80000000,其它情況均直接取相減結(jié)果作為最終 結(jié)果。
3.6 移位,四舍五入及飽和
這個(gè)功能塊是考慮到計(jì)算結(jié)果由 Q30 變?yōu)?Q15 移位時(shí)會(huì)遇上飽和問(wèn)題,以及為了增加 結(jié)果的精度進(jìn)行四舍五入而設(shè)計(jì)的。
10、
3. 實(shí)際編解碼效果
將向量處理器集成于ARM922T[2]的核中,架構(gòu)方式如圖 2 所示。CPU通過(guò)AHB總線將 數(shù)據(jù)寫入向量處理器,然后寫命令寄存器開始向量運(yùn)算,運(yùn)算結(jié)束后CPU再通過(guò)AHB總線 從向量處理器取回運(yùn)算結(jié)果。
圖 2 向量處理器應(yīng)用方式
首先將 ITU-T G.723.1 協(xié)議所提供的 G.723.1 語(yǔ)音編解碼器的 C 語(yǔ)言源代碼中可以采用
向量運(yùn)算指令計(jì)算的部分全部用向量計(jì)算指令優(yōu)化,然后用 ITU 所有的 G.723.1 測(cè)試向量逐
一對(duì)優(yōu)化過(guò)的代碼進(jìn)行編解碼測(cè)試,全部與標(biāo)準(zhǔn)結(jié)果一致
11、后進(jìn)行編解碼速度的測(cè)試。 測(cè)試環(huán)境設(shè)置如下:CPU 與總線工作頻率均為 60MHz,打開數(shù)據(jù) cache 和指令 cache,
打開 MMU。編解碼測(cè)試性能數(shù)據(jù)如表 2 和表 3 所示,表中向量長(zhǎng)度是用時(shí)間計(jì)算的,以
ms 為單位。
表 2 采用向量處理器后的編碼性能
測(cè)試向量
向量長(zhǎng)度(ms)
編碼速度(ms)
CODEC63.TIN OVERC63.TIN PATHC63H.TIN TAMEC63H.TIN INEQC53.TIN OVERC53H.TIN PATHC53.TIN
9390
600
30570
3000
1890
630
30840
12、9345.8
757.9
35681.9
3841.8
1721.5
583.0
28596.9
表 3 采用向量處理器后的解碼性能
測(cè)試向量
向量長(zhǎng)度(ms)
解碼速度(ms)
OVERD63P.TCO PATHD63P.TCO TAMED63P.TCO INEQD53.TCO OVERD53.TCO PATHD53.TCO
990
3000
3000
60
780
120
127.1
351.3
397.5
3.6
51.7
7.7
從表 2,表 3 的結(jié)果可以看到,在前面所述的測(cè)試環(huán)境下,采用 ITU-T G.723.1
13、進(jìn)行編
解碼基本可以做到 1 路實(shí)時(shí)編碼和 7 路實(shí)時(shí)解碼??紤]到實(shí)際 CPU 的工作頻率一般為測(cè)試 頻率 60MHz 的 3 倍左右或者更高,那么采用上述方式進(jìn)行編解碼完全可以做到 2 路實(shí)時(shí)編 碼 16 路實(shí)時(shí)解碼。
在其它測(cè)試環(huán)境不變但是不采用向量處理器的情況下,測(cè)試結(jié)果如表 4 和表 5 所示。
表 4 采用向量處理器后的編碼性能
測(cè)試向量
向量長(zhǎng)度(ms)
編碼速度(ms)
CODEC63.TIN OVERC63.TIN PATHC63H.TIN TAMEC63H.TIN INEQC53.TIN OVERC53H.TIN PATHC53.TIN
9390
14、600
30570
3000
1890
630
30840
36144.4
2708.9
130341.9
13486.4
5689.8
2020.2
98168.1
表 5 采用向量處理器后的解碼性能
測(cè)試向量
向量長(zhǎng)度(ms)
解碼速度(ms)
OVERD63P.TCO PATHD63P.TCO TAMED63P.TCO INEQD53.TCO OVERD53.TCO PATHD53.TCO
990
3000
3000
60
780
120
294.3
819.1
903.7
7.2
95.2
14.5
表
15、4,表 5 數(shù)據(jù)表明,只用單片 ARM9 的 CPU 進(jìn)行一路 G.723.1 的實(shí)時(shí)編碼是不可能
的。
4. 結(jié) 論
本文結(jié)合 G.723.1 的算法特點(diǎn)設(shè)計(jì)了向量處理器來(lái)分擔(dān) CPU 的編解碼運(yùn)算負(fù)擔(dān),實(shí)際 測(cè)試結(jié)果表明該方法可以大大提高單 CPU 的編解碼速度,這使得單臺(tái) IP 終端實(shí)現(xiàn)以 G.723.1 的編解碼方式進(jìn)行三方通話有了高性價(jià)比的解決方案。
參考文獻(xiàn)
[1] ITU-T Recommendation G.723.1 Dual Rate Speech Coder For Multimedia Communications Transmitt
16、ing at
5.3&6.3kb/s,Geneva,1995
[2] ARM922T Technical Reference Manual (Rev 0),
Vector Processor for G.723.1 Speech Codec
Xing Yunfeng, Sang Lin
School of Telecommunication Engineering, Beijing University of Posts and Telecommunications, Beijing (100876)
Abstract
The
17、 running time is a key element of a speech codec.This paper presents the results of an investigation of employing configurable vector processors to accelerate the G.723.1 speech codec.
According to the objective test,it can highly improve the coding and decoding speed of the
embedded CPU.
Keywords: speech codec, vector processor, embedded processor, speech coding