具有包含用于FIR濾波的矢量卷積函數(shù)的指令集的矢量處理器相關(guān)申請交叉引用本申請要求2011年10月27日提交的、美國專利臨時申請序列號61/552,242、名稱為“軟件數(shù)字前端(SoftDFE)信號處理和數(shù)字射頻”的優(yōu)先權(quán),通過引用并入本文。本申請關(guān)聯(lián)于美國專利申請序列號12/849142,2010年8月3日提交,名稱為“用于提供存儲器帶寬有效關(guān)聯(lián)加速的系統(tǒng)和方法”,通過引用并入本文。技術(shù)領(lǐng)域本發(fā)明涉及數(shù)字處理技術(shù),更特別地,涉及用于矢量卷積的技術(shù)。
背景技術(shù):矢量處理器實現(xiàn)包含在矢量(即,一維數(shù)據(jù)陣列)上操作的指令的指令集。另一方面,標量數(shù)字信號處理器(DSP)具有在單個數(shù)據(jù)項上操作的指令。矢量處理器對于特定工作負荷提供增強的性能。數(shù)字處理器(如DSP和矢量處理器)通常整合專用硬件以執(zhí)行數(shù)學(xué)密集型處理應(yīng)用所需的軟件操作,如加法,乘法,乘法累加(MAC)和移位累加。乘法累加體系結(jié)構(gòu)例如認識到多種公共數(shù)據(jù)處理操作涉及兩數(shù)相乘,將結(jié)果值加到另一值然后累加結(jié)果。這一基本操作可利用專用高速乘法器和累加器有效實現(xiàn)。然而,已有的DSP和矢量處理器不通過具有沖擊響應(yīng)的濾波器提供專用指令來支持輸入信號的矢量卷積。然而,處理器中越來越多地需要矢量卷積操作。在FIR濾波域,例如,卷積處理輸入波形信號和濾波器的沖擊響應(yīng)作為所應(yīng)用的時滯(延遲)的函數(shù)。卷積處理器典型地接收和處理時移輸入信號和濾波器的沖擊響應(yīng)并對每個時移版本(每個時滯)產(chǎn)生一個輸出值。該卷積計算可廣泛用于例如在FIR濾波應(yīng)用中。對于輸入序列長度L和多個時滯W,所需要的計算復(fù)雜度為O(L*W)。因為需要大量計算,因此強烈希望在多種應(yīng)用中加速卷積計算。因此對于數(shù)字處理器,如矢量處理器,存在具有支持矢量卷積函數(shù)的指令集的需求。
技術(shù)實現(xiàn)要素:總體上,提供了一種矢量處理器,具有包含矢量卷積函數(shù)的指令集。根據(jù)本發(fā)明的一方面,所公開的矢量處理器通過獲取包含至少N1+N2-1輸入樣本的矢量在輸入信號和濾波器沖擊響應(yīng)之間執(zhí)行卷積函數(shù);獲取矢量的N2時移版本(包括零移動版本),其中每個時移版本包含N1樣本;并利用N1系數(shù)的矢量執(zhí)行矢量時移版本的加權(quán)求和;并對每個加權(quán)和產(chǎn)生包含一個輸出值的輸出矢量。該矢量處理器例如響應(yīng)于具有包含N1+N2-1輸入樣本的矢量的一個或多個矢量卷積軟件指令而執(zhí)行該方法。該矢量可包含多個實數(shù)或復(fù)數(shù)輸入樣本,并且該濾波器沖擊響應(yīng)可利用作為實數(shù)或復(fù)數(shù)的多個系數(shù)來表達。該多個系數(shù)可利用降低數(shù)量的位使用多個迭代來處理,直到系數(shù)的所有位被處理;并且每個迭代的輸出被移動和累加,直到系數(shù)的所有位被處理。在進一步實施例,當(dāng)由卷積支持的系數(shù)數(shù)量小于濾波器中將被處理的系數(shù)數(shù)量時;較大濾波器的較小塊被迭代處理并且每個迭代的輸出對每個塊被累加,直到所有的較大濾波器被處理。本發(fā)明更全面的理解以及本發(fā)明進一步特征和優(yōu)點將參考如下詳細描述和附圖來獲取。附圖說明圖1為結(jié)合本發(fā)明的特征的示例性矢量處理器的示意性框圖;圖2說明了結(jié)合本發(fā)明的特征的復(fù)數(shù)矢量卷積函數(shù);以及圖3為示例性的基于矢量的數(shù)字處理器的示意性框圖,其根據(jù)本發(fā)明實施例處理矢量輸入以產(chǎn)生矢量輸出。具體實施方式本發(fā)明的某些方面提供了一種矢量處理器,支持矢量卷積函數(shù)。卷積指令典型地接收并處理時移輸入信號和濾波器的沖擊響應(yīng)并對每個時移版本產(chǎn)生具有一個輸出值的矢量?;綧AC操作可利用復(fù)數(shù)或?qū)崝?shù)輸入和系數(shù)。因此,輸入樣本和系數(shù)可為實數(shù)和/或虛數(shù)。所公開的專用矢量卷積指令可用于實現(xiàn)例如數(shù)字前端信號處理中的通道濾波,RF均衡器,IQ失調(diào)校正和用于數(shù)字預(yù)失真(DPD)參數(shù)估計的卷積。如本文所使用,術(shù)語“矢量處理器”為在程序代碼中的矢量數(shù)據(jù)上執(zhí)行矢量指令的處理器。本發(fā)明可用于例如手機,基站和其他網(wǎng)絡(luò)元件。圖1為結(jié)合本發(fā)明的特征的示例性矢量處理器100的示意性框圖。如圖1所示,示例性矢量處理器100包括用于矢量卷積函數(shù)的一個或多個功能單元110,如下文進一步討論。一般地,如果矢量處理器100處理的是包括對應(yīng)于矢量卷積函數(shù)和用于該函數(shù)(即,輸入樣本)的合適的操作數(shù)的預(yù)定義指令關(guān)鍵字的軟件代碼,指令解碼器必須觸發(fā)處理矢量卷積指令所需的合適的矢量卷積功能單元110(一個或多個)。注意,矢量卷積功能單元110可由一個以上指令共享。一般地,本發(fā)明的各方面擴展了傳統(tǒng)矢量處理器,以提供支持矢量卷積函數(shù)的增強指令集。根據(jù)本發(fā)明的方面,矢量處理器100接收具有實數(shù)或復(fù)數(shù)輸入的輸入矢量,應(yīng)用復(fù)數(shù)矢量卷積函數(shù)至該輸入并對每個時移生成具有一個輸出值的矢量。所公開的矢量處理器100具有矢量體系結(jié)構(gòu),如下文結(jié)合圖3討論,其處理一個或多個矢量輸入,每個矢量輸入包含并行處理的多個實數(shù)或復(fù)數(shù)標量數(shù)。如下文結(jié)合圖2進一步討論,如果輸入樣本數(shù)為N1+N2-1,并且輸出樣本數(shù)為N2,則卷積指令執(zhí)行例如單周期中1-4位的N1×N2卷積操作。此外,如果卷積的系數(shù)具有比矢量卷積功能單元系數(shù)位更多的位,則輸出結(jié)果可迭代獲取。例如,如果卷積由2位系數(shù)實現(xiàn),并且需要12位,將采取6次迭代來獲取最終結(jié)果。假設(shè)在輸入中有64個樣本(63被使用),且32個系數(shù)存儲于寄存器而32個輸出被計算,該指令在單周期執(zhí)行1024個兩位系數(shù)乘以32位復(fù)數(shù)數(shù)據(jù)(16位實數(shù)+16位虛數(shù))的MAC運算并且在6個周期執(zhí)行32位復(fù)數(shù)數(shù)據(jù)(16位實數(shù)+16位虛數(shù))乘以24位復(fù)數(shù)系數(shù)(12位實數(shù)+12位虛數(shù))復(fù)數(shù)運算。該性能為高于通用DSP的數(shù)量等級。圖2說明了結(jié)合本發(fā)明的特征的矢量卷積函數(shù)200。一般地,矢量卷積函數(shù)200計算N位復(fù)數(shù)數(shù)據(jù)(N/2位實數(shù)和N/2位虛數(shù))的卷積和復(fù)數(shù)對跖數(shù)據(jù)(例如,系數(shù))。矢量卷積函數(shù)200典型地接收N1+N2-1個樣本的輸入矢量并處理輸入矢量210N1(沿軸230)的N1個樣本的時移版本220和系數(shù),并對每個時移版本(每個時滯)產(chǎn)生FIR輸出值225。輸出矢量260包含N2個輸出值。在圖2的示例性實施例中,輸入矢量210包含實數(shù)或復(fù)數(shù)數(shù)據(jù)(例如,32位實數(shù)和32位虛數(shù))的N1+N2-1個樣本和利用系數(shù)被卷積的具有N1個樣本(16位實數(shù)和16位虛數(shù))的N2個時移版本220。每個系數(shù)可為二進制值(例如,或2位,4位等)。所公開的矢量卷積函數(shù)(vec_conv())加速矢量卷積函數(shù)200中的FIR濾波,其中系數(shù)例如為二進制值(如2位,4位等)。此外,該操作可在單周期中利用足夠數(shù)量的系數(shù)位進一步加速和執(zhí)行,如18位。一般地,每個時移操作包含移動輸入值220的FIR濾波和系數(shù)。對于2位值的示例性卷積,F(xiàn)IR濾波/卷積操作可寫成:其中:其中h(k)表示系數(shù)且x(n-k)表示時移輸入值。在多相位濾波的情況下,系數(shù)hk可對于濾波器的每個相位改變。利用具有沖擊響應(yīng)h的濾波器的輸入信號x的卷積可寫成:輸入信號x與輸入信號y的關(guān)聯(lián)或互相關(guān)可寫成(其中信號x和/或信號y可為已知參考信號如導(dǎo)頻信號或CDMA二進制/雙跖(bipodal)碼):對于利用系數(shù)的12位表示的示例性卷積,以6次迭代來計算FIR濾波輸出(6次2位值)。圖3為示例性基于矢量的數(shù)字處理器300的示意性框圖,其根據(jù)本發(fā)明實施例同時處理一個或多個復(fù)數(shù)。總體上,相對于標量實現(xiàn),圖3的基于矢量的實現(xiàn)通過并發(fā)執(zhí)行不同的處理降低了實現(xiàn)該算法所需的復(fù)雜度或周期數(shù)。因此,基于矢量的數(shù)字處理器300包含用于矢量卷積的功能單元310。一般地,基于矢量的數(shù)字處理器300處理輸入x的矢量并生成輸出的矢量y(n)。對于N1=32和N2=37,示例性基于矢量的數(shù)字處理器300可表示為:(y1,y2,...y37)=vec_cor32x37(x1,x2,...,x68)結(jié)論盡管本發(fā)明的示例性實施例已參考數(shù)字處理器中的數(shù)字邏輯塊和存儲器表來描述,本領(lǐng)域技術(shù)人員清楚的是,多種函數(shù)可實現(xiàn)于數(shù)字域,作為軟件程序的處理步驟,通過電路元件或狀態(tài)機的硬件,或軟件和硬件的組合。該軟件可應(yīng)用于,例如數(shù)字信號處理器,專用集成電路或微控制器。該硬件和軟件可用于實現(xiàn)于集成電路的電路中。因此,本發(fā)明的函數(shù)可實現(xiàn)為用于實現(xiàn)該方法的方法和裝置的形式。本發(fā)明的方面中的一個或多個可實現(xiàn)為程序代碼形式,例如是否存儲在存儲介質(zhì),載入機器和/或由其執(zhí)行,其中,當(dāng)程序代碼載入機器如處理器并由其執(zhí)行時,該機器成為用于實現(xiàn)本發(fā)明的裝置。當(dāng)實現(xiàn)于通用處理器時,程序代碼段聯(lián)合該處理器來提供類似地操作具體邏輯電路的設(shè)備。本發(fā)明還可實現(xiàn)為集成電路、數(shù)字處理器、微處理器和微控制器中的一個或多個。應(yīng)當(dāng)理解,本文示出和描述的實施例和變型僅僅是說明本發(fā)明的原理,并且多種修改可由本領(lǐng)域技術(shù)人員實現(xiàn),而不偏離本發(fā)明的范圍和精神。