專利名稱:用于執(zhí)行simd乘法-累積運(yùn)算的裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于執(zhí)行SIMD (單一指令多重?cái)?shù)據(jù))乘法_累積(MAC)運(yùn)算的裝置及方法。
背景技術(shù):
當(dāng)有必要對若干獨(dú)立數(shù)據(jù)元素執(zhí)行特定數(shù)據(jù)處理運(yùn)算時,一種用于加速此運(yùn)算的執(zhí)行的已知方法是使用SIMD (單一指令多重?cái)?shù)據(jù))方法。根據(jù)SIMD方法,將多個這些數(shù)據(jù)元素并排置放于寄存器內(nèi),且接著并行地對這些數(shù)據(jù)元素執(zhí)行運(yùn)算??墒芤嬗赟IMD方法的一種類型的運(yùn)算為乘法_累積運(yùn)算,該乘法_累積運(yùn)算可采取A+B X C或A-B X C的形式。通常對B和C的不同值執(zhí)行乘法運(yùn)算B X C多次,其中接著將每一乘法結(jié)果相加至運(yùn)行累積值(running accumulate value)A,或自運(yùn)行累積值A(chǔ)減去??紤]產(chǎn)生單一乘法-累積結(jié)果所需要的運(yùn)算,自前文論述將了解,需要多個獨(dú)立乘法運(yùn)算,且通過使用SIMD數(shù)據(jù)處理電路,可并行執(zhí)行多個這些所需乘法以增加乘法-累積運(yùn)算的輸出量。然而,還存在某些類型的運(yùn)算,其中需要執(zhí)行多個獨(dú)立乘法-累積運(yùn)算以便產(chǎn)生多個乘法_累積結(jié)果,但每一乘法_累積運(yùn)算所使用的輸入數(shù)據(jù)之間存在顯著重疊。需要多個乘法-累積運(yùn)算的運(yùn)算的一個特定實(shí)例為有限脈沖響應(yīng)(FIR)濾波運(yùn)算,該有限脈沖響應(yīng)(FIR)濾波運(yùn)算是在數(shù)字信號處理器(DSP)中實(shí)施的標(biāo)準(zhǔn)信號處理任務(wù)。FIR濾波運(yùn)算通常用于許多信號處理應(yīng)用中,諸如通信、音頻處理、視頻處理或圖像處理。許多當(dāng)代數(shù)字信號處理器以及通用微處理器使用SIMD數(shù)據(jù)處理電路以便利用存在于運(yùn)算(諸如FIR濾波運(yùn)算)中的數(shù)據(jù)級并行性。然而,一個重要問題為如何有效地向量化FIR濾波運(yùn)算以便利用數(shù)據(jù)處理裝置的SIMD能力。荷蘭代爾夫特工業(yè)大學(xué)(Delft University of Technology)計(jì)算機(jī)工程實(shí)驗(yàn)室(Computer Engineering Laboratory)白勺 Shahbahrami 等人白勺論 JC "Efficient Vectorization of the FIR Filter”(出現(xiàn)在因特網(wǎng)}lhUp://ce. et. tudelft.nl/ publica tionfiles/1090_ 509_ shahbahrami_prorisc2005. pdf)概述了 用于向量化 FIR 濾波運(yùn)算的各種技術(shù)。根據(jù)第一技術(shù),通過向量化內(nèi)部循環(huán)(inner loop)來向量化FIR濾波器,以使得該內(nèi)部循環(huán)并行計(jì)算單一輸出的若干項(xiàng)。因此,通過此方法,在單一迭代期間在 SIMD數(shù) 據(jù)處理電路內(nèi)并行執(zhí)行形成單一乘法_累積結(jié)果所需的多個乘法運(yùn)算,且因此依次決定每一乘法_累積結(jié)果,其中該處理電路的SIMD能力用于加快每一乘法_累積結(jié)果的計(jì)算。根據(jù)所描述的替代技術(shù),向量化FIR濾波器的外部循環(huán),使得內(nèi)部循環(huán)并行計(jì)算若干輸出中的一項(xiàng)。因此,根據(jù)此技術(shù),在每一迭代中,關(guān)于所需乘法_累積結(jié)果中的每一個執(zhí)行一個乘法_累積計(jì)算,以使得并行執(zhí)行所有所需的乘法_累積運(yùn)算,且在該過程的最后迭代之后可得到乘法_累積運(yùn)算中的每一個的最后乘法_累積結(jié)果。該論文還描述第三機(jī)制, 其中同時向量化內(nèi)部循環(huán)與外部循環(huán)。在克薩斯州(Texas)奧斯汀市(Austin)摩托羅拉公司(Motorola Inc)M Phillip的論 文“AltiVec (TM) Technology: A second Generation SIMD Microprocessor Architecture"(出現(xiàn)在因特網(wǎng) Al http://www. hotchips. org/archives/hclO/2_Mon/ HC10. S5/HC10. 5. 3. pdf)中描述一種用于向量化內(nèi)部循環(huán)的技術(shù),其中使用跨越求和 (sum-across)型指令。此文獻(xiàn)描述使用AltiVec乘法指令來向量化內(nèi)部FIR循環(huán)或外部 FIR循環(huán)的技術(shù)。然而,外部循環(huán)技術(shù)使用向量乘法(或乘法-累積)運(yùn)算,這些運(yùn)算并不同時執(zhí)行數(shù)據(jù)重配置功能。
挪威禾斗技大學(xué)(Norwegian University of Science and Technology)電子及電信學(xué)院(Department of Electronics and Telecommunications) H Naess 的公開"A Programmable DSP for Low-Power, Low-Complexity Baseband Processing,,(出現(xiàn)在因特
http://www. diva-portal, org/ntnu/abstract. xsql dbid=1095)描述用于向量化夕卜部循環(huán)從而得到重復(fù)的向量累積及移位運(yùn)算的技術(shù)。特別地,此公開的圖9示出使用兩個向量輸入及一個內(nèi)部移位寄存器的運(yùn)算。此運(yùn)算經(jīng)由在重復(fù)循環(huán)中發(fā)布多個指令而執(zhí)行多次(例如,如該文獻(xiàn)中的表10中所論述的那樣)。盡管使用內(nèi)部移位寄存器允許數(shù)據(jù)的一些內(nèi)部重配置,但有必要通過重復(fù)循環(huán)迭代多次以便執(zhí)行所要計(jì)算,且每次重復(fù)重復(fù)循環(huán)時, 需要對指令進(jìn)行譯碼及執(zhí)行,且需要從存儲器存取新數(shù)據(jù)值。上文描述的現(xiàn)有技術(shù)通常旨在改良FIR計(jì)算的性能。然而,另一重要問題為功率消耗。本發(fā)明的發(fā)明者認(rèn)識到,當(dāng)執(zhí)行一系列的MAC運(yùn)算時(諸如當(dāng)執(zhí)行FIR運(yùn)算時所需), 存在三個主要活動,即指令提取及譯碼、乘法_累積計(jì)算,及在每一迭代之前對數(shù)據(jù)元素適當(dāng)排序所需的向量數(shù)據(jù)重配置計(jì)算。此外,發(fā)明者注意到,在指令提取及譯碼以及向量數(shù)據(jù)重配置計(jì)算中消耗顯著功率,例如所消耗總功率的25-40%。因此,需要提供用于執(zhí)行SIMD乘法-累積運(yùn)算的經(jīng)改良的技術(shù),其與已知現(xiàn)有技術(shù)相比降低了功率消耗。
發(fā)明內(nèi)容
從第一方面來看,本發(fā)明提供一種數(shù)據(jù)處理裝置,其包含SIMD數(shù)據(jù)處理電路,其響應(yīng)于控制信號而對多個數(shù)據(jù)元素并行執(zhí)行數(shù)據(jù)處理運(yùn)算;指令譯碼器電路,其耦合至所述SIMD數(shù)據(jù)處理電路,且響應(yīng)于程序指令而產(chǎn)生所述控制信號;所述指令譯碼器電路響應(yīng)于將輸入數(shù)據(jù)元素的第一向量、系數(shù)數(shù)據(jù)元素的第二向量以及指示所需的多個迭代M的標(biāo)量值作為輸入操作數(shù)的重復(fù)乘法_累積(重復(fù)MAC)指令而產(chǎn)生控制信號以控制所述SIMD 數(shù)據(jù)處理電路執(zhí)行乘法-累積處理的所述多個迭代,該乘法-累積處理的每一迭代包含并行執(zhí)行N個乘法-累積運(yùn)算以便產(chǎn)生N個乘法-累積數(shù)據(jù)元素;對于每一迭代,決定來自所述第一向量的N個輸入數(shù)據(jù)元素以及來自所述第二向量的要在該N個乘法-累積運(yùn)算期間與該N個輸入數(shù)據(jù)元素中的每一個相乘的單一系數(shù)數(shù)據(jù)元素;以及輸出自在該乘法-累積處理的最后迭代中產(chǎn)生的該N個乘法-累積數(shù)據(jù)元素導(dǎo)出的N個乘法-累積結(jié)果。根據(jù)本發(fā)明,提供單一指令(本文中稱為重復(fù)MAC指令),其將輸入數(shù)據(jù)元素的第一向量、系數(shù)數(shù)據(jù)元素的第二向量及指示所需的多個迭代M的標(biāo)量值作為輸入操作數(shù)。指令譯碼器電路響應(yīng)于此重復(fù)MAC指令以產(chǎn)生控制信號,這些控制信號用于控制SIMD數(shù)據(jù)處理電路執(zhí)行乘法_累積處理的多個迭代,其中每一迭代涉及并行執(zhí)行N個乘法-累積運(yùn)算。在每一迭代期間,SIMD數(shù)據(jù)處理電路決定來自第一向量的N個輸入數(shù)據(jù)元素及來自第二向量的單一系數(shù)數(shù)據(jù)元素。在執(zhí)行多個迭代之后,SIMD數(shù)據(jù)處理電路接著輸出N個乘法-累積
結(jié)果。
因此,使用本發(fā)明,可使用單一指令來使得SIMD數(shù)據(jù)處理電路執(zhí)行乘法-累積處理的由作為該指令的輸入操作數(shù)提供的標(biāo)量值決定的多個迭代,以便直接產(chǎn)生多個乘法-累積結(jié)果。由于所有指定迭代所需的所有數(shù)據(jù)元素可直接從被作為指令的輸入操作數(shù)提供的第一向量及第二向量導(dǎo)出,因此與已知現(xiàn)有技術(shù)相比,可實(shí)現(xiàn)能量消耗的顯著降低, 現(xiàn)有技術(shù)需要執(zhí)行程序循環(huán)多次,且在每一次通過循環(huán)期間存取存儲器。特別地,本發(fā)明提供可在無其它寄存器或指令讀取的情況下執(zhí)行以便產(chǎn)生多個乘法_累積結(jié)果的單一指令, 從而與已知現(xiàn)有技術(shù)相比節(jié)省顯著能量消耗。本發(fā)明的重復(fù)MAC指令可用于多種目的。然而,在一個實(shí)施例中,使用重復(fù)MAC指令來執(zhí)行FIR濾波運(yùn)算,且所產(chǎn)生的N個乘法-累積結(jié)果形成N個FIR結(jié)果。因此,根據(jù)本發(fā)明的這樣的實(shí)施例,可使用單一指令來使得SIMD數(shù)據(jù)處理電路執(zhí)行乘法_累積處理的多個迭代以便從該單一指令直接產(chǎn)生多個FIR結(jié)果。此方法提供用于產(chǎn)生這樣的FIR結(jié)果的特別具能量效益的機(jī)制。SIMD數(shù)據(jù)處理電路可以以多種方式配置。然而,在一個實(shí)施例中,SIMD數(shù)據(jù)處理電路具有用于決定用于每一迭代的N個輸入數(shù)據(jù)元素及單一系數(shù)數(shù)據(jù)元素的狀態(tài)機(jī)。在一個特定實(shí)施例中,提供至SIMD數(shù)據(jù)處理電路的控制信號中的一個識別所需迭代的數(shù)目M, 且狀態(tài)機(jī)產(chǎn)生內(nèi)部控制信號,這些內(nèi)部控制信號取決于正執(zhí)行的迭代而改變,且用于選擇用于每一迭代的輸入數(shù)據(jù)元素以及單一系數(shù)數(shù)據(jù)元素。在一個特定實(shí)施例中,第一向量中的輸入數(shù)據(jù)元素的數(shù)目為至少N+M-1,且狀態(tài)機(jī)通過使得相對于用于迭代P-I的N個數(shù)據(jù)元素執(zhí)行移位運(yùn)算而決定用于迭代P的N個輸入數(shù)據(jù)元素。在執(zhí)行第一迭代時,選擇初始的N個輸入數(shù)據(jù)元素。在一個實(shí)施例中,狀態(tài)機(jī)對于每一迭代決定來自該第二向量的不同系數(shù)數(shù)據(jù)元素。然而,在一些實(shí)施例中,對于多于一個迭代保持系數(shù)數(shù)據(jù)元素相同。這樣可(例如)使得能夠響應(yīng)于單一指令而執(zhí)行若干獨(dú)立乘法_累積處理,其中對于每一乘法_累積處理在最后迭代后產(chǎn)生N個乘法-累積結(jié)果。或者,可通過每一迭代改變系數(shù)數(shù)據(jù)元素,但對于多于一個迭代保持輸入數(shù)據(jù)元素相同而響應(yīng)于單一指令執(zhí)行若干獨(dú)立乘法_累積處理。在一個實(shí)施例中,重復(fù)MAC指令還將初始乘法-累積數(shù)據(jù)元素的向量作為輸入操作數(shù)。在替代實(shí)施例中,可能不提供這樣的初始乘法-累積數(shù)據(jù)元素的向量,而替代地在開始該過程時將累積器初始化為零。由于根據(jù)本發(fā)明,重復(fù)MAC指令指定指示所需的多個迭代的標(biāo)量值作為其輸入操作數(shù)中的一個,所以SIMD數(shù)據(jù)處理電路響應(yīng)于重復(fù)MAC指令以執(zhí)行所需計(jì)算而采取的時鐘周期的數(shù)目并不是預(yù)定的,且將取決于對于重復(fù)MAC指令的任何特定示例所指定的標(biāo)量值而顯著改變。通常,在數(shù)據(jù)處理裝置的各種其它組件的活動與由SIMD數(shù)據(jù)處理電路響應(yīng)于該重復(fù)MAC指令而執(zhí)行的計(jì)算之間存在某些相依性。舉例而言,自程序存儲器提取以供由 SIMD數(shù)據(jù)處理電路執(zhí)行的后續(xù)指令將不能夠由SIMD數(shù)據(jù)處理電路執(zhí)行,直至其已完成關(guān)于該重復(fù)MAC指令所需的計(jì)算為止。此外,被提取以由數(shù)據(jù)處理裝置的其它組件執(zhí)行的指令可能不能夠被執(zhí)行,直至SIMD數(shù)據(jù)處理電路已完成響應(yīng)于該重復(fù)MAC指令所需的計(jì)算為止(舉例而言,若這些指令指定N個乘法-累積結(jié)果中的任一個作為輸入操作數(shù))。
為減輕由這些問題導(dǎo)致的不必要的功率消耗,在一個實(shí)施例中,狀態(tài)機(jī)根據(jù)標(biāo)量值決定迭代的數(shù)目M,且在正執(zhí)行該多個迭代中的至少一個時將停止信號(stall signal) 斷言(assert)至數(shù)據(jù)處理裝置的一個或多個組件。在一個特定實(shí)例中,該停止信號用以在斷言該停止信號時暫停指令提取。考慮到諸如特定組件的管線深度等方面,發(fā)布停止信號的時間長度將取決于特定實(shí)施例。在一個實(shí)施例中,在多個迭代中的除一個以外的所有迭代期間發(fā)布該停止信號,藉此(例如)通過避免在指令提取活動中所消耗的任何不必要的功率而使得顯著功率節(jié)省。盡管在一個實(shí)施例中,每一時鐘周期完成一迭代,但應(yīng)了解,并不要求每一時鐘周期完成一迭代,且在替代實(shí)施例中,可在每一迭代的完成之間存在多于一個時鐘周期。 在一個實(shí)施例中,該數(shù)據(jù)處理裝置進(jìn)一步包含用于存儲數(shù)據(jù)元素的SIMD寄存器組,該SIMD數(shù)據(jù)處理電路在執(zhí)行該乘法-累積處理的所述多個迭代之前從該SIMD寄存器組的寄存器存取所述第一向量及第二向量,藉此在執(zhí)行該乘法-累積處理的所述多個迭代期間無需關(guān)于該第一向量及該第二向量而對SIMD寄存器組進(jìn)行進(jìn)一步存取。通過避免在執(zhí)行該乘法-累積處理的該多個迭代期間存取該SIMD暫存區(qū)組的需要,可實(shí)現(xiàn)顯著功率節(jié)省。在一個特定實(shí)施例中,輸入數(shù)據(jù)元素的第一向量具有為N的倍數(shù)的若干輸入數(shù)據(jù)元素,且SIMD數(shù)據(jù)處理電路通過存取SIMD寄存器組的多個寄存器而存取這些輸入數(shù)據(jù)元素,所述多個寄存器中的每一個含有N個輸入數(shù)據(jù)元素。在一個實(shí)施例中,系數(shù)數(shù)據(jù)元素的第二向量具有小于或等于N的若干系數(shù)數(shù)據(jù)元素,且這些系數(shù)數(shù)據(jù)元素是從該SIMD寄存器組的一個寄存器存取的。然而,在替代實(shí)施例中,系數(shù)數(shù)據(jù)元素的第二向量具有為N的倍數(shù)的若干系數(shù)數(shù)據(jù)元素,且該SIMD數(shù)據(jù)處理電路通過存取該SIMD寄存器組的多個寄存器而存取所述系數(shù)數(shù)據(jù)元素。在一個實(shí)施例中,該數(shù)據(jù)處理裝置進(jìn)一步包含用于存儲N個乘法_累積數(shù)據(jù)元素的乘法_累積寄存器。盡管在一個實(shí)施例中,此乘法_累積寄存器可由該SIMD寄存器組內(nèi)的一個或多個寄存器提供,但在替代實(shí)施例中,該乘法_累積寄存器是獨(dú)立于該SIMD寄存器組而提供。在一個實(shí)施例中,這些輸入數(shù)據(jù)元素中的每一個包含X個位,這些系數(shù)數(shù)據(jù)元素中的每一個包含Y個位,且存儲于該乘法-累積寄存器中的每一乘法-累積數(shù)據(jù)元素在大小上為至少X+Y個位。由于該乘法-累積寄存器存儲N個乘法-累積數(shù)據(jù)元素,所以應(yīng)該了解,該乘法_累積寄存器需要比SIMD寄存器組中的用于存儲輸入數(shù)據(jù)元素或系數(shù)數(shù)據(jù)元素的寄存器寬。盡管X與Y可不同,但在一個實(shí)施例中,X與Y相同,使得輸入數(shù)據(jù)元素與系數(shù)數(shù)據(jù)元素具有相同大小。盡管每一乘法_累積數(shù)據(jù)元素在大小上可確切地為X+Y個位,但在一個實(shí)施例中, 該乘法_累積寄存器以擴(kuò)展形式存儲這些乘法_累積數(shù)據(jù)元素,該擴(kuò)展形式包括用于決定溢位(overflow)的額外位。因此,當(dāng)自在乘法-累積處理的最后迭代中產(chǎn)生的N個乘法-累積數(shù)據(jù)元素導(dǎo)出N個乘法-累積結(jié)果時,可考慮這些額外位以便檢測已發(fā)生溢位的情形,且相應(yīng)地修改相關(guān)的乘法-累積數(shù)據(jù)元素。可以多種方式自該擴(kuò)展形式導(dǎo)出N個乘法-累積結(jié)果。在一個實(shí)施例中,使擴(kuò)展形式元素飽和至結(jié)果元素的大小,使得在結(jié)果元素的范圍外的值由其在范圍內(nèi)最接近的值替換。在另一個實(shí)施例中,這些結(jié)果元素是通過采用擴(kuò)展形式元素的選定部分且廢棄其余位而形成。其它實(shí)施例可進(jìn)行兩者且使擴(kuò)展形式元素的選定部分飽和。 盡管在一個實(shí)施例中,輸入數(shù)據(jù)元素及系數(shù)數(shù)據(jù)元素為實(shí)數(shù),但在其它實(shí)施例中, 輸入數(shù)據(jù)元素及系數(shù)數(shù)據(jù)元素中的至少一個為包含實(shí)部及虛部的復(fù)數(shù)(complex number). 在一個這樣的復(fù)數(shù)實(shí)施例中,乘法_累積處理的每一迭代包含并行執(zhí)行N個復(fù)數(shù)乘法-累積運(yùn)算以便產(chǎn)生N個復(fù)數(shù)乘法-累積數(shù)據(jù)元素,且N個乘法-累積結(jié)果輸出為復(fù)數(shù)。在一個實(shí)施例中,輸入數(shù)據(jù)元素及系數(shù)數(shù)據(jù)元素中的僅一個將為復(fù)數(shù)。舉例而言, 輸入數(shù)據(jù)元素可為復(fù)數(shù),而系數(shù)數(shù)據(jù)元素可為實(shí)數(shù)。在一個這樣的實(shí)施例中,可在執(zhí)行復(fù)數(shù)乘法_累積運(yùn)算之前將系數(shù)數(shù)據(jù)元素轉(zhuǎn)換為復(fù)數(shù)形式。在另一個實(shí)施例中,輸入數(shù)據(jù)元素及系數(shù)數(shù)據(jù)元素二者都為包含實(shí)部及虛部的復(fù)數(shù)。在一個實(shí)施例中,每一復(fù)數(shù)乘法-累積運(yùn)算涉及執(zhí)行一系列的乘法、加法及減法運(yùn)算,以便產(chǎn)生相應(yīng)復(fù)數(shù)乘法_累積數(shù)據(jù)元素的實(shí)部及虛部。在一個實(shí)施例中,系數(shù)數(shù)據(jù)元素為復(fù)數(shù),且可在執(zhí)行N個復(fù)數(shù)乘法_累積運(yùn)算之前使該復(fù)數(shù)系數(shù)數(shù)據(jù)元素共軛。通常,此涉及對復(fù)數(shù)系數(shù)數(shù)據(jù)元素的虛部求反(negate)。執(zhí)行此共軛的能力可以在乘法_累積處理的多個迭代期間處理復(fù)數(shù)的方式來提供靈活性。存在指定這樣的共軛的多種方式,但在一個實(shí)施例中,可提供重復(fù)MAC指令的非共軛及共軛變數(shù)兩者。響應(yīng)于這樣的共軛重復(fù)MAC指令,指令譯碼器電路被配置成產(chǎn)生額外控制信號來使得SIMD數(shù)據(jù)處理電路在執(zhí)行N個復(fù)數(shù)乘法-累積運(yùn)算之前對復(fù)數(shù)系數(shù)數(shù)據(jù)元素的虛部求反。盡管在一個實(shí)施例中,乘法_累積運(yùn)算可使得每一乘法結(jié)果相加至執(zhí)行累積值, 但在替代實(shí)施例中,這些乘法_累積運(yùn)算可形成乘法_減法運(yùn)算,其中每一乘法結(jié)果自運(yùn)行累積值減去。在一個特定實(shí)施例中,使得執(zhí)行乘法-累積處理的多個迭代(在其期間,這些乘法_累積運(yùn)算使得將乘法結(jié)果相加至運(yùn)行累積值)的重復(fù)MAC指令之后是另一使得執(zhí)行乘法_累積處理的多個迭代的重復(fù)MAC指令,其中此時所執(zhí)行的這些乘法_累積運(yùn)算使得將乘法結(jié)果自運(yùn)行累積值減去。指令的這樣的組合可為有用的(例如,當(dāng)對復(fù)數(shù)執(zhí)行運(yùn)算時)。在一個實(shí)施例中,由指令譯碼器電路產(chǎn)生的控制信號中的一個指定是否需要舍入,且若需要舍入,則狀態(tài)機(jī)被配置成使得將舍入增量注入在所述多個迭代中的一個(例如,該最后迭代)中執(zhí)行的每一乘法_累積運(yùn)算中。因此,重復(fù)乘法_累積指令可指定需要舍入,且在這種情況下,狀態(tài)機(jī)被配置成允許除最后迭代外的所有迭代在無舍入的情況下進(jìn)行,且使舍入增量接著注入在最后迭代中執(zhí)行的每一乘法-累積運(yùn)算中,以便實(shí)施所需舍入。作為實(shí)例來考慮輸入數(shù)據(jù)元素及系數(shù)數(shù)據(jù)元素中的每一個在長度上為16位的情形, 則所產(chǎn)生的乘法_累積數(shù)據(jù)元素在大小上將為32位。若不需要舍入,則將輸出全32位結(jié)果。然而,若需要舍入,則需要輸出16個最高有效位作為結(jié)果,但執(zhí)行舍入運(yùn)算以考慮將不直接包括于結(jié)果中的16個最低有效位。為執(zhí)行所需舍入,在位位置15處注入舍入增量(假定32個位編號是通過位位置0至31給出,且位位置31為最高有效位)。當(dāng)通過重復(fù)MAC 指令指定舍入時,狀態(tài)機(jī)確保僅在最后迭代期間應(yīng)用舍入,以便確保舍入處理僅應(yīng)用于用以形成最后乘法_累積結(jié)果的最后乘法_累積數(shù)據(jù)元素。
然而,盡管在前述實(shí)施例中,在最后迭代期間注入舍入增量,但在替代實(shí)施例中, 可在任一迭代中注入舍入增量,因此舍入無需留至最后迭代。在一個實(shí)施例中,由指令譯碼器電路產(chǎn)生的控制信號中的一個指定要產(chǎn)生的乘法-累積數(shù)據(jù)元素是飽和的還是非飽和的,且SIMD數(shù)據(jù)處理電路中的累積電路是取決于所述控制信號而加以配置。因此,在本發(fā)明的實(shí)施例中,可指定重復(fù)MAC指令的飽和及非飽和
變數(shù)。
盡管加于標(biāo)量值選擇上的約束將取決于實(shí)施,但在一個實(shí)施例中,將標(biāo)量值約束為小于或等于N。在這樣的實(shí)施例中,假定所需迭代的數(shù)目小于或等于N,則有可能經(jīng)由單一重復(fù) MAC指令來執(zhí)行乘法-累積處理的多個迭代以便產(chǎn)生N個乘法-累積結(jié)果,其中這些乘法_累積結(jié)果表示所要的實(shí)際最后結(jié)果。然而,若需要多于N個迭代,則此可通過使用一系列的重復(fù)MAC指令來達(dá)成,其中每一后續(xù)重復(fù)MAC指令采用來自先前重復(fù)MAC指令的乘法_累積結(jié)果作為輸入。因此,在一個實(shí)施例中,若需要N+Q個迭代(其中Q小于或等于N), 則第一重復(fù)MAC指令具有指示N個迭代的標(biāo)量值,且之后是另一重復(fù)MAC指令,該另一重復(fù) MAC指令具有指示Q個迭代的標(biāo)量值且將由SIMD數(shù)據(jù)處理電路響應(yīng)于該第一重復(fù)MAC指令而產(chǎn)生的N個乘法-累積結(jié)果識別為初始乘法_累積數(shù)據(jù)元素的向量。在一個實(shí)施例中,若如由該重復(fù)MAC重量指定的所述標(biāo)量值大于可執(zhí)行的迭代的最大數(shù)目(通常為第二向量中系數(shù)數(shù)據(jù)元素的數(shù)目),則將該標(biāo)量值設(shè)定為等于所述最大數(shù)目,且所述SIMD數(shù)據(jù)處理電路執(zhí)行所述乘法_累積處理的所述最大數(shù)目的迭代。在一個實(shí)施例中,該指令譯碼器電路響應(yīng)于一系列的重復(fù)MAC指令而產(chǎn)生控制信號來控制該SIMD數(shù)據(jù)處理電路執(zhí)行一系列的乘法-累積級,每一乘法-累積級執(zhí)行所述乘法_累積處理的所述多個迭代,且至少一個乘法_累積級使用由先前乘法_累積級所產(chǎn)生的N個乘法-累積結(jié)果作為輸入。盡管可出于多種原因(例如,因?yàn)樗璧臄?shù)目超過N) 使用這樣的方法,但在一個特定實(shí)施例中,使用該序列的乘法-累積級來對復(fù)數(shù)執(zhí)行重復(fù) MAC運(yùn)算。在這種情形中,輸入數(shù)據(jù)元素及系數(shù)數(shù)據(jù)元素皆將包括實(shí)部及虛部,且需要四個乘法_累積級以便產(chǎn)生所需的實(shí)數(shù)及虛數(shù)乘法_累積結(jié)果。在需要執(zhí)行一系列的乘法_累積級的一個實(shí)施例中,則可布置指令譯碼器電路以響應(yīng)于單一重復(fù)MAC指令而產(chǎn)生控制信號來控制所述SIMD數(shù)據(jù)處理電路執(zhí)行至少兩個乘法_累積級,每一乘法_累積級執(zhí)行所述乘法_累積處理的所述多個迭代,其中每一乘法_累積級所需的輸入數(shù)據(jù)元素及系數(shù)數(shù)據(jù)元素是根據(jù)該第一向量及該第二向量決定的。 因此,響應(yīng)于單一重復(fù)MAC指令,可并行執(zhí)行多個乘法_累積級,在一個特定實(shí)施例中,能夠并行執(zhí)行兩個乘法_累積級。這在其中對于這些級中的兩個或更多個重復(fù)使用輸入數(shù)據(jù)元素或系數(shù)數(shù)據(jù)元素的情況中是有用,因?yàn)槠湟庵^這些數(shù)據(jù)元素僅需要自寄存器組/存儲器存取一次,藉此得到進(jìn)一步改良的能量節(jié)省。在一個特定實(shí)施例中,輸入數(shù)據(jù)元素在兩個乘法-累積級之間重復(fù)使用,用于一個級的每一迭代之后是使用相同N個輸入數(shù)據(jù)元素的另一級的對應(yīng)迭代。系數(shù)數(shù)據(jù)元素的每一迭代被改變,使得不同系數(shù)數(shù)據(jù)元素用于該兩個級中的每一個。在一特定實(shí)施例中,將標(biāo)量值M約束為小于或等于N/2,以使得可通過含有N個系數(shù)數(shù)據(jù)元素的SIMD寄存器的內(nèi)容來提供所需的系數(shù)數(shù)據(jù)元素。然而,替代地,可通過使用多于一個SIMD寄存器提供系數(shù)數(shù)據(jù)元素的第二向量來移除對M的此限制。從第二方面來看,本發(fā)明提供一種使用SIMD數(shù)據(jù)處理電路及指令譯碼器電路來處理數(shù)據(jù)的方法,該SIMD數(shù)據(jù)處理電路響應(yīng)于控制信號而對多個數(shù)據(jù)元素并行執(zhí)行數(shù)據(jù)處理運(yùn)算,并且該指令譯碼器電路耦合至所述SIMD數(shù)據(jù)處理電路且響應(yīng)于程序指令而產(chǎn)生所述控制信號,所述方法包含以下步驟對將輸入數(shù)據(jù)元素的第一向量、系數(shù)數(shù)據(jù)元素的第二向量以及指示所需的多個迭代M的標(biāo)量值作為輸入操作數(shù)的重復(fù)乘法_累積(重復(fù) MAC)指令進(jìn)行譯碼,以產(chǎn)生控制信號;以及用這些控制信號控制所述SIMD數(shù)據(jù)處理電路以通過以下步驟產(chǎn)生乘法_累積結(jié)果執(zhí)行乘法_累積處理的所述多個迭代,該乘法_累積處理的每一迭代包含并行執(zhí)行N個乘法-累積運(yùn)算以便產(chǎn)生N個乘法-累積數(shù)據(jù)元素;對于每一迭代,決定來自所述第一向量的N個輸入數(shù)據(jù)元素以及來自 所述第二向量的要在該N 個乘法_累積運(yùn)算期間與該N個輸入數(shù)據(jù)元素中的每一個相乘的單一系數(shù)數(shù)據(jù)元素;以及輸出自在該乘法_累積處理的最后迭代中產(chǎn)生的該N個乘法-累積數(shù)據(jù)元素導(dǎo)出的N個乘法-累積結(jié)果。從第三方面來看,本發(fā)明提供一種數(shù)據(jù)處理裝置的虛擬機(jī)實(shí)施,所述虛擬機(jī)實(shí)施響應(yīng)于將輸入數(shù)據(jù)元素的第一向量、系數(shù)數(shù)據(jù)元素的第二向量以及指示所需的多個迭代M 的標(biāo)量值作為輸入操作數(shù)的重復(fù)乘法_累積(重復(fù)MAC)指令而通過以下步驟產(chǎn)生乘法-累積結(jié)果執(zhí)行乘法-累積處理的所述多個迭代,該乘法-累積處理的每一迭代包含并行執(zhí)行 N個乘法-累積運(yùn)算以便產(chǎn)生N個乘法-累積數(shù)據(jù)元素;對于每一迭代,決定來自所述第一向量的N個輸入數(shù)據(jù)元素以及來自所述第二向量的要在該N個乘法-累積運(yùn)算期間與該N 個輸入數(shù)據(jù)元素中的每一個相乘的單一系數(shù)數(shù)據(jù)元素;以及輸出自在該乘法_累積處理的最后迭代中產(chǎn)生的該N個乘法-累積數(shù)據(jù)元素導(dǎo)出的N個乘法-累積結(jié)果。從第四方面來看,本發(fā)明提供一種數(shù)據(jù)處理裝置,其包含SIMD數(shù)據(jù)處理構(gòu)件,其用于響應(yīng)于控制信號而對多個數(shù)據(jù)元素并行執(zhí)行數(shù)據(jù)處理運(yùn)算;以及指令譯碼器構(gòu)件,其耦合至所述SIMD數(shù)據(jù)處理構(gòu)件,用于響應(yīng)于程序指令而產(chǎn)生所述控制信號;其中所述指令譯碼器構(gòu)件響應(yīng)于將輸入數(shù)據(jù)元素的第一向量、系數(shù)數(shù)據(jù)元素的第二向量以及指示所需的多個迭代M的標(biāo)量值作為輸入操作數(shù)的重復(fù)乘法_累積(重復(fù)MAC)指令而產(chǎn)生控制信號來控制所述SIMD數(shù)據(jù)處理構(gòu)件通過以下步驟產(chǎn)生乘法_累積結(jié)果執(zhí)行乘法_累積處理的所述多個迭代,該乘法_累積處理的每一迭代包含并行執(zhí)行N個乘法-累積運(yùn)算以便產(chǎn)生N個乘法-累積數(shù)據(jù)元素;對于每一迭代,決定來自所述第一向量的N個輸入數(shù)據(jù)元素以及來自所述第二向量的要在該N個乘法-累積運(yùn)算期間與該N個輸入數(shù)據(jù)元素中的每一個相乘的單一系數(shù)數(shù)據(jù)元素;以及輸出自在該乘法_累積處理的最后迭代中產(chǎn)生的該N個乘法-累積數(shù)據(jù)元素導(dǎo)出的N個乘法-累積結(jié)果。
圖IA及圖IB示意性地圖示根據(jù)本發(fā)明的一個實(shí)施例的由SIMD數(shù)據(jù)處理電路響應(yīng)于重復(fù)乘法_累積指令而執(zhí)行的乘法_累積處理的迭代;
圖2為示意性地說明可使用本發(fā)明的實(shí)施例的技術(shù)的數(shù)據(jù)處理裝置的框圖; 圖3為更詳細(xì)地說明本發(fā)明的一個實(shí)施例的SIMD MAC電路的圖; 圖4為說明圖3中所示的狀態(tài)機(jī)的操作的狀態(tài)圖;圖5為說明根據(jù)圖3的實(shí)施例所產(chǎn)生的各種信號的時序圖6示意性地說明根據(jù)本發(fā)明的一個實(shí)施例的在每一迭代中執(zhí)行的乘法_累積處理; 圖7示意性地說明根據(jù)本發(fā)明的一個實(shí)施例的如何自輸入數(shù)據(jù)元素的第一向量導(dǎo)出各迭代的N個輸入數(shù)據(jù)元素;
圖8示意性地說明根據(jù)本發(fā)明的一個實(shí)施例的如何自系數(shù)數(shù)據(jù)元素的第二向量導(dǎo)出每一迭代所用的系數(shù)向量;
圖9示意性地圖示如何利用本發(fā)明的實(shí)施例的一系列的重復(fù)MAC指令來對復(fù)數(shù)執(zhí)行 FIR濾波運(yùn)算;
圖10說明圖3中所示實(shí)施例的本發(fā)明的替代實(shí)施例,其中SIMD MAC電路可響應(yīng)于單一重復(fù)MAC指令而并行執(zhí)行兩個獨(dú)立乘法-累積級; 圖11為圖10的電路的時序圖;以及
圖12為示意性地說明虛擬機(jī)實(shí)施的圖,該虛擬機(jī)實(shí)施用于利用本發(fā)明的實(shí)施例的重復(fù)MAC指令來執(zhí)行程序代碼。
具體實(shí)施例方式根據(jù)本發(fā)明的實(shí)施例,提供重復(fù)乘法_累積(重復(fù)MAC)指令,其采用輸入數(shù)據(jù)元素的第一向量(Vd)、系數(shù)數(shù)據(jù)元素的第二向量(VC)及指示所需的多個迭代M的標(biāo)量值作為輸入操作數(shù)。可選地,該重復(fù)MAC指令也可采用初始乘法-累積數(shù)據(jù)元素(本文中也稱為初始累積數(shù)據(jù)元素)的向量作為輸入操作數(shù)。當(dāng)由指令譯碼器電路對此指令進(jìn)行譯碼時,產(chǎn)生控制信號,該控制信號用以控制 SIMD數(shù)據(jù)處理電路以便產(chǎn)生由以下方等式給出的向量累積器輸出
vaccfi] = vc
十…·十w[M· 1 ]*vd[i十M-1 ] 對于向量中的所有“i,,
若指定初始乘法-累積數(shù)據(jù)元素的向量,則此等式變?yōu)?br>
vaccp] = vacc(i}+vc(0]*vdfi] + ·...寺 w[M4] vd[i+M-l!對于向量中的所有 “ i ”
SIMD數(shù)據(jù)處理電路可視為提供N個并行處理路線(lane),且在一個實(shí)施例中,上述等式中的變量“i”采用0與N-I之間的所有值。因此,如圖IA及圖IB中所說明的那樣,SIMD 數(shù)據(jù)處理電路將產(chǎn)生含有N個乘法-累積結(jié)果的向量累積器輸出10,其中這些N個乘法-累積結(jié)果是在執(zhí)行圖IA或圖IB中所示的M個迭代之后產(chǎn)生的。圖IA說明在未指定初始乘法_累積數(shù)據(jù)元素的向量的情況下執(zhí)行的乘法_累積處理的迭代,且圖IB說明在指定初始乘法_累積數(shù)據(jù)元素的向量的情況下執(zhí)行的乘法_累積處理的迭代。應(yīng)注意,在圖IA及圖IB中,且實(shí)際上在先前提及的等式中,在VaCC、VC或vd后 的方括號中的數(shù)字指示這些向量的正被運(yùn)算的特定數(shù)據(jù)元素。因此,如自圖IA或圖IB顯而易見,在第一迭代期間,來自系數(shù)向量vc的第一系數(shù)數(shù)據(jù)元素用于所有N個并行處理路線中,其中每一路線采用來自輸入數(shù)據(jù)元素的向量vd的不同輸入數(shù)據(jù)元素(始于第一輸入數(shù)據(jù)元素)。在迭代2中,在所有路線上使用下一系數(shù)數(shù)據(jù)元素,且所使用的輸入數(shù)據(jù)元素的向量類似于第一迭代中所使用的輸入數(shù)據(jù)元素的向量,但移位一個數(shù)據(jù)元素位置。在每一迭代之間改變系數(shù)數(shù)據(jù)元素及輸入數(shù)據(jù)元素的方式是相同的,使得第M迭代所使用的系數(shù)數(shù)據(jù)元素及輸入數(shù)據(jù)元素為示出于圖IA或圖IB中右手欄中的這些數(shù)據(jù)元素。
向量VaCC、VC及vd中的數(shù)據(jù)元素可為實(shí)數(shù)或復(fù)數(shù)。因此,每一迭代可執(zhí)行實(shí)數(shù)或復(fù)數(shù)乘法-累積運(yùn)算,其中第M迭代產(chǎn)生N個實(shí)數(shù)或復(fù)數(shù)結(jié)果。當(dāng)考慮執(zhí)行復(fù)數(shù)乘法-累積運(yùn)算的實(shí)例時,圖IA及圖IB中的框中的乘法中的每一個將涉及執(zhí)行一系列的乘法、加法及減法運(yùn)算,以便產(chǎn)生相應(yīng)復(fù)數(shù)乘法結(jié)果數(shù)據(jù)元素的實(shí)部及虛部。特別地,考慮vc(k) * vd(l)的一般情況,將執(zhí)行以下計(jì)算
乘法實(shí)部結(jié)果=[vdR(l) * vcR(k)]編[VdI(I) * vcl(k)]
乘法虛部結(jié)果=[VdR(I) * vcl(k)] + [vdl(l) * vcR(k)]
(其中“R”表示實(shí)數(shù)分量,且“ I ”表示虛數(shù)分量)。接著將這些實(shí)數(shù)及虛數(shù)乘法結(jié)果與先前實(shí)數(shù)及虛數(shù)累積結(jié)果進(jìn)行累積。盡管在以上實(shí)例中,輸入數(shù)據(jù)元素及系數(shù)數(shù)據(jù)元素兩者皆為復(fù)數(shù),但在替代實(shí)施例中,可將這些數(shù)據(jù)元素中僅一個在輸入向量中被提供為復(fù)數(shù)。舉例而言,雖然可將輸入數(shù)據(jù)元素提供為復(fù)數(shù),可將系數(shù)數(shù)據(jù)元素提供為實(shí)數(shù)。在一個實(shí)施例中,將此情形處理為上文所述的復(fù)數(shù)實(shí)施例的特殊情況,其中vd及 vacc向量的數(shù)據(jù)元素為復(fù)數(shù),而vc的系數(shù)數(shù)據(jù)元素為實(shí)數(shù)。為執(zhí)行此運(yùn)算,可如下將實(shí)數(shù) vc元素在內(nèi)部轉(zhuǎn)換為復(fù)數(shù)
且接著可如上文所論述執(zhí)行復(fù)數(shù)乘法-累積運(yùn)算。如先前所提及,根據(jù)本發(fā)明的實(shí)施例,圖IA或圖IB中所說明的所有運(yùn)算可由SIMD 數(shù)據(jù)處理電路響應(yīng)于單一重復(fù)MAC指令而執(zhí)行,且因此,該N個乘法-累積結(jié)果10所有均響應(yīng)于該單一指令而產(chǎn)生。此外,在本發(fā)明的實(shí)施例中,在執(zhí)行圖第IA或圖第IB中所示的計(jì)算之前將所有所需的輸入數(shù)據(jù)元素及系數(shù)數(shù)據(jù)元素自SIMD寄存器組讀取至SIMD數(shù)據(jù)處理電路的內(nèi)部寄存器中,因此避免在執(zhí)行圖IA或圖IB中所示的計(jì)算期間進(jìn)一步存取SIMD 寄存器組的需要。為實(shí)現(xiàn)此功能性,輸入數(shù)據(jù)元素的第一向量將包括至少N+M-1個數(shù)據(jù)元素,且系數(shù)數(shù)據(jù)元素的第二向量將包括至少M(fèi)個系數(shù)數(shù)據(jù)元素。在一個特定實(shí)施例中,將標(biāo)量值M限制為小于或等于N,且通過提供兩個N-元素SIMD寄存器的內(nèi)容以形成輸入數(shù)據(jù)元素的第一向量,且通過提供一個N-元素SIMD寄存器的內(nèi)容以提供系數(shù)數(shù)據(jù)元素的第二向量來滿足以上要求。盡管響應(yīng)于重復(fù)MAC指令而執(zhí)行的運(yùn)算可以在多種情形中有用,其提供用于執(zhí)行 HR濾波運(yùn)算的尤其有能量效益的機(jī)制,其中向量累積器輸出10中的M個乘法-累積結(jié)果中的每一個形成FIR結(jié)果。對于重復(fù)MAC功能模型的若干變數(shù)中的每一個,以下C代碼根據(jù)標(biāo)準(zhǔn)向量抽取及向量與標(biāo)量乘法提供圖IA以及圖IB的上述運(yùn)算的功能模型。1)重復(fù)MAC,其中初始累積器歸零。vacc - vrolalnsl6(vacc, vext_sli!vd0,vdl,P), vget_iane_sl€(vc, Arn vmlal η ai6 !vacc, veKt Sl€(vdO,vdl, ), vqet lane s16(vc, P)); 2)重復(fù)MAC,其中初始累積器作為輸入向量c 4)使重復(fù)MAC飽和,其中初始累積器作為輸入向量。
5)使重復(fù)MAC飽和并舍入,其中初始累積器歸零。 vint32L_t vqr4mla2_Ez_sl6<vintl6__t vdO, viotl6_t veil vintl6_t vc, ui t_t M 6)使重復(fù)MAC飽和并舍入,其中初始累積器作為輸入向量。
v!nt32L t{vint32L_t 5Ufacci i intl6_t ^rdQf vintlS—t ν ,
^int X6 t vcr nint t Μ}
vacc 驚 vqdmlal π s!6 Cvaccr vext_s!6 CvdO4. udl, P) ^ irgefc_lane_slS (n cf P)); 1 丨― , 一一 return yqrdmlaX η sl6 vaccr vext sl6{^d0> vdl,P}, vget lane s!6 Cvcf )) 7
*■----- ------------------“·'^tm-"^rUUmm*' 7)重復(fù)乘法與減法,其中初始累積器歸零。 8)重復(fù)乘法與減法,其中初始累積器作為輸入向量。
9)使重復(fù)乘法與減法飽和,其中初始累積器歸零。 10)使重復(fù)乘法與減法飽和,其中初始累積器作為輸入向量。 12)使重復(fù)乘法與減法飽和并舍入,其中初始累積器作為輸入向量。 vint32L t TOrdtalsI r slS{vint32L t%riritl6 t %π! , ν ηt veil
13)復(fù)數(shù)重復(fù)MAC,其中初始累積器歸零。
vint32L_t vinlal rz c!6vdQ, ^intl6_t ^rdlf¥intlS__tuint_t M)
I— ——一
uint^t,
ν£rt132L·—t vacG譯血]p—32L CO} ι15)復(fù)數(shù)共軛重復(fù)MAC,其中初始累積器歸零。
%rinZ32t^t vmlB.l_conj_xz_cl6 (^intl6 t vdOr vint!6 t ^dlr ^intlG t wcf
m~滅■_
{
vintJlh^t iracc vdup_B_s32LCC>S ;
M = <H>-EiEHENTCl6) ? ELEMENTC16 : Μ; M - Μ<1) ? {M-D ι.
for FmQ ι P<M; P++》 f
vacc vmlal_conj_it_cl6(-vaccf vext_cX6 [^dOi veil, P) r ifget(vc^ P》} i
T "“
retam vmlal eon{vacc vext_cl6 (VdOr-^dli P3 ,· VgotsJLane書cU
}胃一16)復(fù)數(shù)共軛重復(fù)MAC,其中初始累積器作為輸入向量。
考慮上文實(shí)例1,此C代碼的第一行識別重復(fù)MAC指令,該重復(fù)MAC指令采用輸入數(shù)據(jù)元素向量VdO及vdl (—起構(gòu)成輸入數(shù)據(jù)元素的第一向量vd)、形成系數(shù)數(shù)據(jù)元素的向量的系數(shù)向量vc以及形成指示所需迭代的數(shù)目的標(biāo)量值的整數(shù)值M作為輸入。接著在 C代碼的其余部分中開始響應(yīng)于該指令而執(zhí)行的運(yùn)算。首先,初始化整數(shù)變量P,其后將乘法-累積向量vacc初始化為零(此由代碼的第二行vint32L_t vacc=vdup_n_s32L(0)來執(zhí)行)。然而,向量vd0、vdl及vc中的各個數(shù)據(jù)元素為16位寬,向量vacc內(nèi)的各個數(shù)據(jù)元素為32位寬以便適應(yīng)使16-位輸入數(shù)據(jù)元素與16-位系數(shù)數(shù)據(jù)元素相乘而產(chǎn)生的乘法結(jié)果。接下來,執(zhí)行對標(biāo)量值M的兩個核查。特別地,若M大于或等于參數(shù)N (在C代碼中稱為ELEMENTS16),則將M設(shè)定為等于N,而否則標(biāo)量值M保持不變。其次,若M小于1,則將其設(shè)定為等于零,而否則將其設(shè)定為等于M-I。接著以P=O開始進(jìn)入循環(huán),且在P小于M時重復(fù)該循環(huán)(每次重復(fù)該循環(huán)時P遞增)。在每一迭代中,執(zhí)行乘法-累積運(yùn)算(識別為vmlal_n_S16)。使用獲得路線程序、自向量vc選擇第P系數(shù)數(shù)據(jù)元素,連同接著將該單一系數(shù)數(shù)據(jù)元素廣播至向量(即,形成所有皆相同的N個獨(dú)立系數(shù)數(shù)據(jù)元素(此廣播功能性由vmlal_n_S16運(yùn)算中的“η”指示))而決定所使用的系數(shù)數(shù)據(jù)元素。如所示的那樣,作為至MAC運(yùn)算的輸入的所需的N個輸入數(shù)據(jù)元素是使用移位運(yùn)算vext_sl6而取決于P的值自VdO及vdl選出。最后,自向量vacc選取累積輸入。一旦已完成循環(huán)的所需數(shù)目的迭代,則執(zhí)行最后vmlal_n_S16運(yùn)算以便返回結(jié)果。假定在進(jìn)入循環(huán)之前將M設(shè)定為等于M-1,則需要此最后迭代。實(shí)例2類似于實(shí)例1,但此處初始乘法-累積向量vacc由指令指定。實(shí)例3至12 說明飽和以及飽和并舍入變數(shù),連同每一個的乘法-減法版本。實(shí)例13類似于實(shí)例1,但向量VaCC、VC及vd的數(shù)據(jù)元素為復(fù)數(shù),且在每一迭代中, 執(zhí)行復(fù)數(shù)乘法-累積運(yùn)算(識別為vmlal_n_C16)及復(fù)數(shù)移位運(yùn)算(識別為veXt_cl6)。實(shí)例15類似于實(shí)例13,但使系數(shù)數(shù)據(jù)元素共軛以便在執(zhí)行乘法-累積運(yùn)算之前反轉(zhuǎn)系數(shù)數(shù)據(jù)元素的虛部的正負(fù)號。實(shí)例14及16分別類似于實(shí)例13及15,但在此等實(shí)例中,初始乘法-累積向量vacc由指令指定。盡管實(shí)例13至16表示對應(yīng)于實(shí)數(shù)實(shí)例1及2的復(fù)數(shù)變數(shù)(以非共軛及共軛形式兩者),但將了解,可容易地提供所有實(shí)數(shù)實(shí)例1至12的復(fù)數(shù)變數(shù)。圖2說明根據(jù)本發(fā)明的一個實(shí)施例的數(shù)據(jù)處理裝置,在此特定實(shí)例中,數(shù)據(jù)處理裝置采用數(shù)字信號處理器(DSP)IOO的形式。盡管由DSP 100執(zhí)行的運(yùn)算可采用多種形式, 但在一個實(shí)施例中,可使用DSP來執(zhí)行無線基帶處理功能。無線基帶對這樣的集成電路的處理能力要求很高。所需的數(shù)據(jù)輸出量大,且使DSP內(nèi)提供的不同元件平衡以使所有元件在高效率下使用是重要的。如圖2中所示,該DSP包括SIMD部分105,該SIMD部分105包括SIMD乘法-累積電路110及各種其它SIMD處理電路120。SIMD MAC電路110及該其它 SIMD處理電路120兩者皆可存取SIMD寄存器組140,該SIMD寄存器組140存儲SIMD處理電路所需的數(shù)據(jù)元素的向量。SIMD MAC電路110也可存取用以保持在MAC運(yùn)算期間產(chǎn)生的累積數(shù)據(jù)元素的一個或多個SIMD累積寄存器130。在一個實(shí)例中,SIMD MAC電路110及其它SIMD處理電路130具有32個并行處理路線,每一個為16位寬,其可用以對自SIMD寄存器組提供的算術(shù)值執(zhí)行乘法、加法及混排 (shuffle)運(yùn)算。自SIMD寄存器組140內(nèi)的一個或多個輸入值寄存器中的各個元素選取 16-位數(shù)據(jù)字,以便提供所需輸入值至并行處理路線中的每一個。
通常,SIMD電路將被管線化,且在一個實(shí)施例中,SIMD MAC電路形成3級管線,使得在將計(jì)算發(fā)布至管線中三個周期之后可得到計(jì)算結(jié)果。在一個實(shí)施例中,各個處理路線是由控制器160自程序存儲器165檢索的256-位極長指令字(VLIW)指令控制。此VLIW指令通常也將包括用以控制DSP 100的標(biāo)量部分145 內(nèi)的標(biāo)量處理電路150的標(biāo)量指令,該標(biāo)量處理電路150可存取一個或多個標(biāo)量寄存器組 155??刂破?60將包括一個或多個指令譯碼器,該一個或多個指令譯碼器用以對VLIW指令內(nèi)的指令進(jìn)行譯碼,且將所需控制信號發(fā)送至SIMD部分105內(nèi)的電路及標(biāo)量部分145內(nèi)的電路??刂破饕矊⒁曅枰以谛枰獣r將控制信號發(fā)送至加載/存儲單元170以使得從數(shù)據(jù)存儲器175檢索數(shù)據(jù)以供存儲于SIMD寄存器組140或標(biāo)量寄存器組155中,或用于使得數(shù)據(jù)從寄存器組存儲回至數(shù)據(jù)存儲器175。標(biāo)量處理電路150與上述SIMD處理電路并行操作且主要用以執(zhí)行控制操作。標(biāo)量處理電路中的一個也可控制地址產(chǎn)生單元,該地址產(chǎn)生單元負(fù)責(zé)產(chǎn)生用以存取數(shù)據(jù)存儲器175中的數(shù)據(jù)值的存儲器存取地址。在一個實(shí)施例中,標(biāo)量處理電路150具有1至3個管線級,且數(shù)據(jù)存儲器175具有3個周期或6個周期的等待時間。考慮本發(fā)明的實(shí)施例的重復(fù)MAC指令,此指令可出現(xiàn)于由控制器160從程序存儲器165檢索的VLIW指令中,且在對該重復(fù)MAC指令進(jìn)行譯碼后,即將控制信號發(fā)布至SIMD 部分105,且特別地發(fā)布至SIMD MAC電路110以使得SIMD MAC電路110執(zhí)行乘法-累積處理的多個迭代以便實(shí)施圖IA或圖IB中示意性說明的運(yùn)算序列。圖3為更詳細(xì)說明提供于SIMD MAC電路110中以提供所需功能性的組件的圖。 寄存器220及222被提供用于最初存儲向量vdO及vdl (共同形成輸入數(shù)據(jù)元素的第一向量vd),而寄存器246用以存儲系數(shù)數(shù)據(jù)元素的第二向量。使用多路復(fù)用器M8、1 :N轉(zhuǎn)換器 250及多路復(fù)用器M2,單一系數(shù)數(shù)據(jù)元素可被選擇以用于每一迭代,且跨越N個路線廣播以便形成存儲于寄存器MO中的系數(shù)的向量。在乘法-累積處理的第一迭代期間,此經(jīng)由 1 N轉(zhuǎn)換器244達(dá)成,該1 N轉(zhuǎn)換器244選取第一系數(shù)數(shù)據(jù)元素且將其在N個路線上廣播, 藉此避免使用寄存器M6的1個周期的延遲。盡管在第一迭代中,寄存器220含有向量VdO (即,向量vd的前N個輸入數(shù)據(jù)元素),但對于每一后續(xù)迭代,寄存器220的內(nèi)容可使用移位電路2 加以改變,該移位電路 226接納來自寄存器組222的數(shù)據(jù)元素中的一個(經(jīng)由多路復(fù)用器224)及寄存器220的當(dāng)前內(nèi)容,且執(zhí)行移位(移位1個數(shù)據(jù)元素)以便建立下一迭代所需的輸入數(shù)據(jù)元素,該結(jié)果接
20著經(jīng)由多路復(fù)用器230路由回至寄存器220中。如圖3中接著示出,SIMD MAC電路110具有N個并行處理路線沈0,每一路線包括框沈0中所說明的組件(寄存器264可視為橫跨所有路線),且每一路線對輸入寄存器220、 240中的每一個內(nèi)的N個數(shù)據(jù)元素中的一個進(jìn)行運(yùn)算。特別地,乘法器電路262使寄存器 220中的輸入數(shù)據(jù)元素中的一個與來自寄存器MO的系數(shù)數(shù)據(jù)元素相乘,結(jié)果存儲于寄存器沈4中。在下一時鐘周期中,加法器電路268使用自歸零電路(set to zero circuitry) 272提供的累積值及來自寄存器沈4的乘法結(jié)果來執(zhí)行累積運(yùn)算。通常,控制信號開啟線 (control signal on line) 217將停用歸零功能性,且因此,將自SIMD累積寄存器130接收累積結(jié)果。然而,可選擇地,重復(fù)MAC指令可指定零值初始累積值,且在該情況下,在第一迭代期間,控制信號開啟線217將啟用歸零功能性,因此確保在第一周期中不使用累積值。盡管重復(fù)MAC指令通常將指定乘法加法運(yùn)算(其中將每一迭代中的乘法結(jié)果相加至運(yùn)行累積結(jié)果),但其可替代地指定乘法減法運(yùn)算(其中自運(yùn)行累積值減去每一迭代中的乘法結(jié)果)。在限定乘法減法運(yùn)算的情況下,控制信號開啟線216將使得求反電路266對寄存器沈4中的數(shù)據(jù)元素在輸入至加法器沈8中之前求反。類似地,重復(fù)MAC指令可指定所產(chǎn)生的乘法-累積數(shù)據(jù)元素是飽和還是非飽和的。 若其為非飽和的,則通常,輸入數(shù)據(jù)元素的大小及/或累積寄存器130的大小將被選擇以使得累積結(jié)果不可能飽和。然而,若指令指定乘法-累積數(shù)據(jù)元素是飽和的,則飽和電路270 經(jīng)由路徑219接收控制信號以使其能夠在將來自加法器沈8的輸出路由至SIMD累積寄存器130之前對該輸出進(jìn)行評估。特別地,飽和邏輯評估溢位位以決定輸出乘法-累積數(shù)據(jù)元素是否跨越邊界從最大正數(shù)轉(zhuǎn)變至最小負(fù)數(shù),或從最小負(fù)數(shù)轉(zhuǎn)變至最大正數(shù),且若如此, 則修改結(jié)果,以使其分別保持處于該最大正數(shù)或最小負(fù)數(shù)。還提供控制信號218以允許在最后迭代期間將可選舍入增量注入由加法器268執(zhí)行的加法中,若重復(fù)MAC指令指定需要舍入,則使用此控制信號218。若需要舍入,則僅在最后迭代中執(zhí)行舍入以便確保產(chǎn)生正確的數(shù)學(xué)結(jié)果,且因此僅在最后迭代期間注入可選舍入增量值是重要的,這將由在下文更詳細(xì)論述的狀態(tài)機(jī)200來控制。上文論述的各種電路元件的操作由狀態(tài)機(jī)200控制,當(dāng)要由SIMD MAC電路110執(zhí)行的每一 SIMD指令由控制器160譯碼時,狀態(tài)機(jī)200接收各種控制信號。如圖3中所示出,狀態(tài)機(jī)在對指令進(jìn)行譯碼后接收三個信號。第一信號為經(jīng)由路徑202發(fā)布的重復(fù)指示,且若設(shè)定此信號,則其指示正被譯碼的指令為重復(fù)MAC指令,而若未設(shè)定此信號,則其指示正被譯碼的指令為標(biāo)準(zhǔn)MAC指令。經(jīng)由路徑204接收的信號為給出迭代的數(shù)目的重復(fù)數(shù)信號,此信號由來自存儲于標(biāo)量寄存器組155中的標(biāo)量值提供,且不用于標(biāo)準(zhǔn)MAC指令。所接收的最后信號為經(jīng)由路徑206接收的mult_Cmd信號,且其提供標(biāo)準(zhǔn)乘法器命令信息,諸如乘法-累積為乘法加法還是乘法減法、累積值為飽和的還是非飽和的、是否需要舍入、是否指定初始累積值,或是否應(yīng)在開始運(yùn)算時清除累積,及任何其它相關(guān)控制信號。在替代實(shí)施例中,可自形成重復(fù)MAC指令的輸入操作數(shù)中的一個的標(biāo)量值導(dǎo)出重復(fù)數(shù)信號,在該情況下,該重復(fù)數(shù)信號由控制器160而非自標(biāo)量寄存器組155提供。圖4示出狀態(tài)機(jī)的兩個基本狀態(tài)。在重設(shè)后,狀態(tài)機(jī)處于無重復(fù)狀態(tài)300且保持于無重復(fù)狀態(tài)直至其在路徑202上接收到處于設(shè)定狀態(tài)的重復(fù)信號及經(jīng)由路徑204接收到指定若干迭代的重復(fù)數(shù)信號為止。在這些條件下,狀態(tài)機(jī)的狀態(tài)自無重復(fù)狀態(tài)300轉(zhuǎn)變至重復(fù)狀態(tài)310。狀態(tài)機(jī)發(fā)布若干控制信號至SIMD MAC電路110內(nèi)的各種組件,該控制信號包括經(jīng)由路徑212的mcyc_en信號,該mcyc_en信號在狀態(tài)機(jī)處于無重復(fù)狀態(tài)300時設(shè)定為邏輯值0,且在狀態(tài)機(jī)處于重復(fù)狀態(tài)310時設(shè)定為邏輯1值。在處于重復(fù)狀態(tài)310時,狀態(tài)機(jī)維持被稱為mCyC_Cnt信號的計(jì)數(shù)器,其在執(zhí)行每一迭代時自初始重復(fù)數(shù)信號值M遞減,且當(dāng)mCyC_Cnt信號小于或等于1時,狀態(tài)機(jī)自重復(fù)狀態(tài)310轉(zhuǎn)變回至無重復(fù)狀態(tài)300。圖5為說明由狀態(tài)機(jī)200響應(yīng)于其經(jīng)由路徑202、204及206接收的三個輸入信號而產(chǎn)生的各種信號(在這些信號識別重復(fù)MAC指令的執(zhí)行的情形中)的時序圖??紤]多路復(fù)用器230,由狀態(tài)機(jī)200經(jīng)由路徑212發(fā)布的mcyc_en信號用以控制該多路復(fù)用器,使得一旦已斷言該信號,則多路復(fù)用器將其在其左手側(cè)(自移位電路226)接收的輸入輸出至寄存器220。因此,在第一周期中,在斷言mcyc_en信號之前,來自SIMD寄存器組的輸出經(jīng)由多路復(fù)用器路由至寄存器220中,且如先前所提及,此意味將向量寄存器內(nèi)容vdO置于寄存器220內(nèi)。在隨后周期中,多路復(fù)用器230將由所斷言的mcyc_en信號來起動以選擇左手輸入,且如先前所論述,此左手輸入將由移位電路2 基于寄存器220 的內(nèi)容及在多路復(fù)用器224的控制下自寄存器222選擇的數(shù)據(jù)元素中的一個而產(chǎn)生。多路復(fù)用器2M接收如圖5中所示的mCyC_elem_sel信號,且依據(jù)該信號自寄存器222選擇相關(guān)數(shù)據(jù)元素。因此,參看圖IA或圖IB將可見,用于每一迭代的寄存器220的內(nèi)容將為圖IA 或圖IB中示意性示出的用于每一迭代的輸入數(shù)據(jù)元素??紤]多路復(fù)用器M2,則在不存在重復(fù)MAC指令的情況下,多路復(fù)用器M2的左手輸入將傳播至寄存器240中。特別地,多路復(fù)用器242接收兩位控制信號,該兩位控制信號是由狀態(tài)機(jī)經(jīng)由路徑212輸出的mcyc_en信號及由狀態(tài)機(jī)經(jīng)由路徑202接收的重復(fù)信號形成。在不存在重復(fù)MAC指令的情況下,兩個位皆被清除至邏輯零狀態(tài)。在出現(xiàn)重復(fù)MAC指令時,重復(fù)信號將在第一時鐘周期期間被設(shè)定為高,但在設(shè)定狀態(tài)下將不由狀態(tài)機(jī)212輸出mcyc_en信號直至下一時鐘周期。因此,在第一時鐘周期期間,至寄存器MO的輸入將由至多路復(fù)用器對2的中間輸入給出,此中間輸入由1:N轉(zhuǎn)換器電路244使用系數(shù)的向量 vc中的第一系數(shù)數(shù)據(jù)元素(S卩,vcW])產(chǎn)生。對于重復(fù)MAC指令期間的每一隨后周期,將設(shè)定經(jīng)由路徑212發(fā)布的mcyc_en信號,且因此,將自至多路復(fù)用器M2的右手輸入選取至寄存器MO的輸入,如先前所論述,該右手輸入在多路復(fù)用器M8的控制下自寄存器246 的內(nèi)容(即,系數(shù)數(shù)據(jù)元素的第二向量)產(chǎn)生。類似于多路復(fù)用器224,多路復(fù)用器248接收 mCyC_elem_sel信號且因此依序步進(jìn)通過系數(shù)數(shù)據(jù)元素中的每一個。考慮多路復(fù)用器對8, 若mCyC_elem_sel為i,則此多路復(fù)用器選擇系數(shù)數(shù)據(jù)元素i+1。為了完整起見,在圖5中說明從寄存器D 240及寄存器A 220的輸出,其中VCtl指示用于第一迭代中的系數(shù)的向量,VDtl指示用于第一迭代中的輸入數(shù)據(jù)元素的向量,等等。如圖3中所示,經(jīng)由路徑206接收的mult_Cmd信號鎖存于寄存器205中,且接著隨后路由至多路復(fù)用器210,在多路復(fù)用器210處,其可在各種命令信息接著在第三時鐘周期中經(jīng)由路徑216、217、218及219傳播之前傳播至寄存器215。僅插入兩個寄存器205、 215以確保在傳播命令信息時所需的三個周期的延遲,以使得該命令信息在正確周期傳遞至累積電路。如圖5中所示,狀態(tài)機(jī)還可產(chǎn)生mult_Cmd信號的略加修改的版本以供經(jīng)由路徑208路由至多路復(fù)用器210的另一輸入端,且接著發(fā)布控制信號(mult_Cmd_ex控制信號)至多路復(fù)用器以指示應(yīng)將左手輸入還是右手輸入作為mult_Cmd_ex信號傳播至多路復(fù)用器215。此控制信號設(shè)定為高,同時mcyc_en或mcyc_ex (圖5中所示的mcyc_en的管線式版本)設(shè)定為高。因此,對于第一迭代,如圖5中所示,所接收的mult_cmd OP將作為OPO經(jīng)由路徑 208輸出,且被選擇用于自多路復(fù)用器210輸出,OPO與OP相同,除了在OP指定舍入的情形中,在該情況下,OPO將停用舍入以確保在第一迭代中不注入舍入增量。對于下一迭代直至最后迭代,狀態(tài)機(jī)將經(jīng)由路徑208發(fā)布0P1,該OPl將與原始OP相同,但其中始終啟用累積,且始終停用舍入,且將自多路復(fù)用器210傳播OPl。如先前所提及,原始OP可識別應(yīng)將初始累積歸零,但顯而易見,此情形應(yīng)僅發(fā)生于第一迭代期間,且其后有必要啟用累積。需要保持停用舍入直至最后周期,以便確保發(fā)生正確的數(shù)學(xué)舍入。如還在圖5中所示,在最后迭代中,mult_Cmd_ex信號將被設(shè)定為0P2,該0P2將與原始OP相同,但其中始終啟用累積, 且將從多路復(fù)用器210傳播0P2。因此,此時,若原始OP指定舍入,則0P2還將指定舍入,且將使得經(jīng)由路徑218注入舍入增量。圖5中的mult_Cmd_eX信號示出多路復(fù)用器210的輸出,其將導(dǎo)致一個周期后自寄存器215發(fā)布信號mult_Cmd_Wb以控制運(yùn)算的寫回級。如還在圖3中所示,經(jīng)由路徑212發(fā)布的mcyc_en信號可可選擇地鎖存于寄存器 214中,以產(chǎn)生圖5中所示的停止信號??墒褂么诵盘杹硎沟每刂破髟跀嘌酝V剐盘枙r暫停指令提取,藉此降低功率消耗。圖6示意性說明由根據(jù)本發(fā)明的實(shí)施例中的N個路線沈0內(nèi)的SIMD MAC電路110 執(zhí)行的乘法-累積運(yùn)算。如圖6中所示,多路復(fù)用器沈2內(nèi)的該N個路線接收N個輸入數(shù)據(jù)元素400及通過復(fù)制單一系數(shù)數(shù)據(jù)元素N次而形成的系數(shù)向量410,且基于所述輸入數(shù)據(jù)元素400及系數(shù)向量410而執(zhí)行所需的乘法,從而導(dǎo)致產(chǎn)生存儲于寄存器沈4內(nèi)的N個乘法數(shù)據(jù)元素420。假定所述輸入數(shù)據(jù)元素及系數(shù)數(shù)據(jù)元素中的每一個為16位寬,則該乘法數(shù)據(jù)元素中的每一個將為至少32位寬。此后,將該N個乘法數(shù)據(jù)元素420相加(或可選擇地相減,若啟動求反電路沈6的話)至從電路272輸入的N個乘法-累積數(shù)據(jù)元素430。通常,此將為SIMD累積寄存器130 的內(nèi)容,其將為來自先前迭代的N個乘法-累積數(shù)據(jù)元素,或?qū)槌跏汲朔?累積數(shù)據(jù)元素的向量?;蛘撸瑢τ诘谝坏?,該N個乘法-累積數(shù)據(jù)元素將均被歸零。加法的結(jié)果為產(chǎn)生 N個乘法-累積數(shù)據(jù)元素440,其存儲回至SIMD累積寄存器130。圖7示意性地說明如何布置圖3中的電路元件220、222、2M及226以自輸入數(shù)據(jù)元素的原始第一向量vd產(chǎn)生用于第一迭代的N個輸入數(shù)據(jù)元素。特別地,最初,向量vdO 450存儲于寄存器220中,且向量vdl 460存儲于寄存器222中。在第一迭代上,寄存器220 的內(nèi)容不變,且因此,N個輸入數(shù)據(jù)元素470路由至多路復(fù)用器沈2。在下一迭代中,移位電路2 接收寄存器220的當(dāng)前內(nèi)容(S卩,向量vdO 450),且還從存儲于寄存器222中的向量 vdl接收第一數(shù)據(jù)元素(即,vd[N]),且執(zhí)行移位一個數(shù)據(jù)元素的向右移位運(yùn)算,使得所得N 個輸入數(shù)據(jù)元素480被產(chǎn)生且經(jīng)由多路復(fù)用器230傳回至寄存器220中。每一隨后迭代以類似方式進(jìn)行,以便產(chǎn)生圖IA或圖IB中所示的該系列N個輸入數(shù)據(jù)元素向量。圖8示意性地說明如何自存儲于寄存器M6中的系數(shù)數(shù)據(jù)元素的第二向量vc導(dǎo)出用于每一迭代的系數(shù)向量。在第一迭代上,選擇第一系數(shù)數(shù)據(jù)元素vc
且接著將其復(fù)制N次以形成系數(shù)向量510。如先前所論述,在一個實(shí)施例中,此實(shí)際上使用1:N轉(zhuǎn)換電路 244而非使用寄存器對6的內(nèi)容達(dá)成,以便避免一個周期的傳播延遲。在下一周期中,選擇第二系數(shù)數(shù)據(jù)元素vc[l]且將其復(fù)制N次以形成系數(shù)向量520,該系數(shù)向量520自1:N轉(zhuǎn)換器250經(jīng)由多路復(fù)用器242輸入至寄存器MO中。對于每一隨后迭代,選擇下一系數(shù)數(shù)據(jù)元素且以相同方式操縱以便產(chǎn)生圖IA或圖IB中所示的該系列系數(shù)向量。在上述實(shí)施例中,重復(fù)MAC指令處理實(shí)數(shù)。然而,如先前所論述,在替代實(shí)施例中, 重復(fù)MAC指令可能被布置成處理復(fù)數(shù),其中(在輸入數(shù)據(jù)的第一向量、系數(shù)的第二向量及N 個乘法-累積結(jié)果中的)所有數(shù)據(jù)元素為復(fù)數(shù)且所有運(yùn)算為復(fù)數(shù)運(yùn)算??紤]圖3的實(shí)例,此可通過將乘法電路262布置為復(fù)數(shù)乘法器來達(dá)成,復(fù)數(shù)乘法器可被布置成執(zhí)行先前第11頁所論述的實(shí)部及虛部的四個乘法,連同所需的加法及減法以便產(chǎn)生具有實(shí)部及虛部的乘法結(jié)果??衫^而將加法器268布置為復(fù)數(shù)加法器以關(guān)于實(shí)部及虛部執(zhí)行所需的累積運(yùn)算以便產(chǎn)生被更新的復(fù)數(shù)累積值。若正執(zhí)行乘法-減法運(yùn)算,則求反電路266將對由乘法電路262 產(chǎn)生的復(fù)數(shù)乘法結(jié)果在輸入至加法器268之前進(jìn)行求反。在正處理復(fù)數(shù)共軛重復(fù)MAC指令的情況下,可將額外控制信號提供至乘法電路 262以使其在執(zhí)行所需乘法運(yùn)算之前反轉(zhuǎn)系數(shù)數(shù)據(jù)元素的虛部的正負(fù)號。作為以以上方式處置復(fù)數(shù)的替代,如圖9中示意性地說明,還可使用四個非復(fù)數(shù)重復(fù)MAC指令來合成復(fù)數(shù)FIR濾波器(MR filter)。特別地,在圖9的上部,示出產(chǎn)生乘法-累積結(jié)果的實(shí)數(shù)分量及虛數(shù)分量所需的等式(“R”指示實(shí)數(shù)分量,且“I”指示虛數(shù)分量)。在圖9的下半部中,示出產(chǎn)生這些結(jié)果所需的一系列的四個指令,其中用于每一指令的輸入操作數(shù)識別于方括號中。因此,第一重復(fù)MAC指令使用vdR及vcR作為輸入向量執(zhí)行乘法加法,且初始累積值為零。對于所有四個指令,將標(biāo)量值設(shè)定為相同值M。第二重復(fù) MAC指令接著使用向量vdl及vcl作為輸入且將由第一重復(fù)MAC指令產(chǎn)生的累積結(jié)果設(shè)定為初始累積結(jié)果而完成產(chǎn)生vaccR結(jié)果。應(yīng)注意,第二重復(fù)MAC指令具有減法變型,且因此執(zhí)行乘法減法運(yùn)算。第三及第四重復(fù)MAC指令接著以類似方式產(chǎn)生vaccl結(jié)果,但此時該兩個重復(fù)MAC指令中的第二個(重復(fù)MAC 4)再次為一加法變數(shù)。盡管在本發(fā)明的上述實(shí)施例中,每一重復(fù)MAC指令接收輸入數(shù)據(jù)元素的第一向量及系數(shù)數(shù)據(jù)元素的第二向量,且產(chǎn)生N個乘法-累積結(jié)果的一個集合,但在替代實(shí)施例中, 一個重復(fù)MAC指令可被布置成產(chǎn)生N個乘法-累積結(jié)果的兩個或更多個集合,其中輸入操作數(shù)或系數(shù)數(shù)據(jù)元素在所執(zhí)行的兩個或更多個乘法-累積處理間重復(fù)使用。此實(shí)施例將參考圖10的框圖及圖11的時序圖加以論述。用于圖10中的裝置用于啟用SIMD MAC電路110以并行執(zhí)行兩個乘法-累積級, 以便全部均響應(yīng)于由控制器160譯碼的單一重復(fù)MAC指令產(chǎn)生N個乘法-累積結(jié)果的兩個獨(dú)立集合。如從圖10與前述圖3的比較所顯而易見,電路基本上相同,經(jīng)歷少數(shù)修改。首先,提供兩個SIMD累積寄存器600、610而非單一 SIMD累積寄存器130,且提供某一些相關(guān)聯(lián)的存取控制電路620,該存取控制電路620由狀態(tài)機(jī)200所發(fā)布的控制信號控制,如下文將更詳細(xì)論述。此外,在圖3中用以決定至寄存器220的輸入的多路復(fù)用器230現(xiàn)由三個輸入多路復(fù)用器630替換,該輸入多路復(fù)用器630由從由狀態(tài)機(jī)200輸出的控制信號導(dǎo)出的兩位信號控制。僅需要注意的另一點(diǎn)是,盡管在圖3中,多路復(fù)用器2M及248兩者由來自狀態(tài)機(jī)的相同控制信號來控制,但如將參考圖11的時序圖更詳細(xì)論述,其現(xiàn)由兩個不同信號控制。如從圖11的時序圖與圖5的時序圖的比較顯而易見,圖11類似于圖5,但額外示出用于圖10的電路中的額外控制信號。如圖10中所示,多路復(fù)用器M8由mcyc_c_sel信號控制,該mcyc_c_sel信號如圖11中所示在每一迭代期間遞增。盡管所指定的迭代的數(shù)目為M,但假定存在兩個正被實(shí)施的獨(dú)立乘法-累積級,則mCyC_Coimt自2M-1遞減。由于 mcyc_c_sel信號在每一迭代期間遞增,可以看到,從寄存器D 240輸出的系數(shù)向量在每一迭代期間改變。相比的下,多路復(fù)用器224由mCyC_b_Sel信號控制,如從圖11顯見,該mcyc_b_ sel信號僅每兩個迭代遞增。如圖10中所示,來自寄存器A 220的輸出作為中間輸入路由回至多路復(fù)用器630。當(dāng)設(shè)定mcyc_en信號時,多路復(fù)用器630將取決于由狀態(tài)機(jī)200經(jīng)由路徑212輸出的mCyC_a_en信號的值而將其中間輸入或其左手輸入輸出至寄存器220。如圖11中所示,此信號在每一迭代中在設(shè)定狀態(tài)與清除狀態(tài)間交替,藉此確保自寄存器220 的輸出對于兩個迭代維持相同,因?yàn)槠鋬?nèi)容僅可響應(yīng)于mCyC_a_en信號變高而正是兩個迭代更新一次。一旦已完成第一迭代所需的三個初始周期,則由存取控制電路620從狀態(tài)機(jī)200 接收的mcyc_acc_ctrl信號也在每一時鐘周期振蕩。當(dāng)此信號處于邏輯零位準(zhǔn)時,存取 SIMD累積寄存器600,且當(dāng)其處于邏輯1位準(zhǔn)時,存取SIMD累積寄存器610。這確保對于獨(dú)立乘法-累積級中的每一個維持的累積數(shù)據(jù)元素獨(dú)立地留存于獨(dú)立SIMD累積寄存器600、 610 內(nèi)。如從圖10及圖11的以上描述顯而易見,在此實(shí)施例中,被選擇用于每一迭代的輸入數(shù)據(jù)元素的向量對于兩個乘法-累積級都重新使用。然而,系數(shù)數(shù)據(jù)元素并未重新使用, 并且相反,系數(shù)數(shù)據(jù)元素的不同向量用于乘法-累積級中的每一個,第一乘法-累積級使用向量W0Ui等,且第二乘法-累積級使用向量VCpVCpVQ等。因此,可見在此實(shí)施例中,如自SIMD寄存器組中的寄存器中的每一個提供的系數(shù)數(shù)據(jù)元素的第二向量含有被封裝使得每一交替系數(shù)數(shù)據(jù)元素與相同乘法-累積級相關(guān)的各個系數(shù)數(shù)據(jù)元素。在此實(shí)施例中,將標(biāo)量值M限制為小于或等于N/2,使得存儲于寄存器246中的N個系數(shù)數(shù)據(jù)元素足以提供圖11中所示的系數(shù)數(shù)據(jù)元素的2M個獨(dú)立向量集合。然而,在替代實(shí)施例中,圖10中的電路可被修改以使得可使用兩個SIMD寄存器的內(nèi)容來提供系數(shù)數(shù)據(jù)元素的第二向量, 藉此允許標(biāo)量值M為小于或等于N的任何值。提供使得能夠在SIMD MAC電路110內(nèi)并行執(zhí)行兩個獨(dú)立乘法-累積級的單一重復(fù)MAC指令在各種情形中可能是有用的。在一個實(shí)施例中,這樣的指令用以降低在執(zhí)行對復(fù)數(shù)執(zhí)行FIR濾波運(yùn)算時所需的各種乘法-累積級時的能量消耗。舉例而言,考慮圖9,可使用一個指令來執(zhí)行級vaccK = vaccK+vdK. vcK及Vacc1 = vacCl+vdK. Vc1兩者。特別地,可顯見,量可在兩個級間共享,但使用先前參考圖10及圖11描述的機(jī)制來選擇系數(shù)數(shù)據(jù)元素的不同向量。因此,實(shí)際上,可由圖9中所示的兩個重復(fù)MAC指令”重復(fù)MAC 1 ”及” 重復(fù)MAC 3 ”執(zhí)行的功能性可包含于單一重復(fù)MAC指令中。類似地,由兩個重復(fù)MAC指令 “重復(fù)MAC 2”及“重復(fù)MAC 4”執(zhí)行的功能性也可包含在單一重復(fù)MAC指令中,但在此情況下,將需要在每一迭代間交替地啟用及停用求反電路沈6,以使得在一累積寄存器中留存乘法減法程序的結(jié)果,而在另一累積寄存器中留存乘法加法程序的結(jié)果。在所有以上實(shí)施例中,將了解,若將標(biāo)量值限制為小于或等于N,仍有可能通過一個接一個地使用多個重復(fù)MAC指令執(zhí)行計(jì)算(需要多于N個迭代),其中隨后重復(fù)MAC指令采用由先前重復(fù)MAC指令產(chǎn)生的N個乘法-累積結(jié)果作為其初始乘法-累積數(shù)據(jù)元素。盡管可通過執(zhí)行一系列本地指令(包括以上提及的重復(fù)MAC指令)的硬件來執(zhí)行上述技術(shù),但將了解,在替代實(shí)施例中,這樣的指令可執(zhí)行于虛擬機(jī)環(huán)境中,其中該指令對于虛擬機(jī)為本地的,但虛擬機(jī)由執(zhí)行于具有不同本地指令集合的硬件上的軟件實(shí)施。虛擬機(jī)環(huán)境可提供仿真執(zhí)行全指令集合的全虛擬機(jī)環(huán)境或可為部分的,例如,僅一些指令(包括本發(fā)明的技術(shù)的指令)由硬件捕集且由部分虛擬機(jī)模擬。更具體言的,上述重復(fù)MAC指令可作為對于全虛擬機(jī)或部分虛擬機(jī)為本地的指令來執(zhí)行,其中該虛擬機(jī)連同其基礎(chǔ)硬件平臺組合地操作以提供上述SIMD處理電路。圖12說明可使用的這種虛擬機(jī)實(shí)施。盡管前述實(shí)施例在用于操作支持相關(guān)指令的特定處理硬件的裝置及方法方面實(shí)施本發(fā)明,但也有可能提供硬件器件的所謂的虛擬機(jī)實(shí)施。這些虛擬機(jī)實(shí)施在運(yùn)行支持虛擬機(jī)程序880的主機(jī)操作系統(tǒng)860的主機(jī)處理器840 上運(yùn)行。通常,需要大的功率強(qiáng)大的處理器來提供以合理速度執(zhí)行的虛擬機(jī)實(shí)施,但這樣的方法在某些情境中可以是適當(dāng)?shù)模T如當(dāng)為兼容性或重新使用原因而想要運(yùn)行對于另一處理器為本地的代碼時。虛擬機(jī)程序880提供與應(yīng)用程序900的應(yīng)用程序接口,該應(yīng)用程序接口與可真實(shí)硬件(由虛擬機(jī)程序880建模的器件)提供的應(yīng)用程序接口相同。因此,程序指令(包括上述重復(fù)MAC指令)可使用虛擬機(jī)程序880自應(yīng)用程序900內(nèi)執(zhí)行以建模其與虛擬機(jī)硬件的互動。盡管已在本文中描述特定實(shí)施例,但將了解,本發(fā)明不限于此,且可在本發(fā)明的范疇內(nèi)對其進(jìn)行許多修改及添加。舉例而言,可在不脫離本發(fā)明的范疇的情況下進(jìn)行以下獨(dú)立權(quán)利要求的特征與從屬權(quán)利要求的特征的各種組合。
2權(quán)利要求
1.一種數(shù)據(jù)處理裝置,包含SIMD數(shù)據(jù)處理電路,其響應(yīng)于控制信號而對多個數(shù)據(jù)元素并行執(zhí)行數(shù)據(jù)處理運(yùn)算;指令譯碼器電路,其耦合至所述SIMD數(shù)據(jù)處理電路且響應(yīng)于程序指令而產(chǎn)生所述控制信號;所述指令譯碼器電路響應(yīng)于將輸入數(shù)據(jù)元素的第一向量、系數(shù)數(shù)據(jù)元素的第二向量、 以及指示所需的多個迭代M的標(biāo)量值作為輸入操作數(shù)的重復(fù)乘法-累積(重復(fù)MAC)指令, 而產(chǎn)生控制信號以控制所述SIMD數(shù)據(jù)處理電路執(zhí)行乘法_累積處理的所述多個迭代,該乘法_累積處理的每一迭代包含并行執(zhí)行N 個乘法_累積運(yùn)算,以便產(chǎn)生N個乘法-累積數(shù)據(jù)元素;對于每一迭代,決定來自所述第一向量的N個輸入數(shù)據(jù)元素、以及來自所述第二向量的要在該N個乘法-累積運(yùn)算期間與該N個輸入數(shù)據(jù)元素中的每一個相乘的單一系數(shù)數(shù)據(jù)元素;以及輸出自在該乘法_累積處理的最后迭代中產(chǎn)生的該N個乘法-累積數(shù)據(jù)元素導(dǎo)出的N 個乘法-累積結(jié)果。
2.如權(quán)利要求1所述的數(shù)據(jù)處理裝置,其中該重復(fù)MAC指令用于執(zhí)行FIR濾波運(yùn)算,且產(chǎn)生的該N個乘法-累積結(jié)果形成N個FIR結(jié)果。
3.如權(quán)利要求1或2所述的數(shù)據(jù)處理裝置,其中該SIMD數(shù)據(jù)處理電路具有狀態(tài)機(jī),該狀態(tài)機(jī)用于決定用于每一迭代的該N個輸入數(shù)據(jù)元素及該單一系數(shù)數(shù)據(jù)元素。
4.如權(quán)利要求3所述的數(shù)據(jù)處理裝置,其中該第一向量中輸入數(shù)據(jù)元素的數(shù)目至少為 N+M-1,且該狀態(tài)機(jī)通過使得相對于用于迭代P-I的該N個數(shù)據(jù)元素執(zhí)行移位運(yùn)算而決定用于迭代P的該N個輸入數(shù)據(jù)元素。
5.如權(quán)利要求3或4所述的數(shù)據(jù)處理裝置,其中該狀態(tài)機(jī)對于每一迭代決定來自所述第二向量的不同系數(shù)數(shù)據(jù)元素。
6.如之前任一權(quán)利要求所述的數(shù)據(jù)處理裝置,其中該重復(fù)MAC指令也將初始乘法_累積數(shù)據(jù)元素的向量作為輸入操作數(shù)。
7.如權(quán)利要求1-5中任一項(xiàng)所述的數(shù)據(jù)處理裝置,其中未指定初始乘法_累積數(shù)據(jù)元素的向量,且該N個乘法-累積數(shù)據(jù)元素在該乘法_累積處理的該第一迭代之前歸零。
8.如從屬于權(quán)利要求3的之前任一項(xiàng)所述的數(shù)據(jù)處理裝置,其中該狀態(tài)機(jī)自該標(biāo)量值決定迭代的數(shù)目M,且在正執(zhí)行該多個迭代中的至少一個時,斷言停止信號至該數(shù)據(jù)處理裝置的一個或多個組件。
9.如權(quán)利要求8所述的數(shù)據(jù)處理裝置,其中該停止信號在除該多個迭代中的一個迭代外的所有迭代期間被斷言。
10.如之前任一權(quán)利要求所述的數(shù)據(jù)處理裝置,進(jìn)一步包含用于存儲數(shù)據(jù)元素的SIMD 寄存器組,該SIMD數(shù)據(jù)處理電路在執(zhí)行該乘法-累積處理的所述多個迭代之前,自該SIMD 寄存器組的寄存器存取所述第一向量及第二向量,藉此在執(zhí)行該乘法_累積處理的所述多個迭代期間無需關(guān)于該第一向量及第二向量而對該SIMD寄存器組進(jìn)行進(jìn)一步存取。
11.如權(quán)利要求10所述的數(shù)據(jù)處理裝置,其中輸入數(shù)據(jù)元素的該第一向量具有為N的倍數(shù)的若干輸入數(shù)據(jù)元素,且該SIMD數(shù)據(jù)處理電路通過存取該SIMD寄存器組的多個寄存器而存取所述輸入數(shù)據(jù)元素,所述多個寄存器中的每一個含有N個輸入數(shù)據(jù)元素。
12.如權(quán)利要求10或11所述的數(shù)據(jù)處理裝置,進(jìn)一步包含用于存儲N個乘法-累積數(shù)據(jù)元素的乘法-累積寄存器。
13.如權(quán)利要求12所述的數(shù)據(jù)處理裝置,其中該輸入數(shù)據(jù)元素中的每一個包含X個位, 該系數(shù)數(shù)據(jù)元素中的每一個包含Y個位,且存儲于該乘法_累積寄存器中的每一乘法_累積數(shù)據(jù)元素在大小上至少為X+Y個位。
14.如權(quán)利要求13所述的數(shù)據(jù)處理裝置,其中該乘法_累積寄存器以擴(kuò)展形式存儲該乘法-累積數(shù)據(jù)元素,該擴(kuò)展形式包括用于決定溢位的額外位。
15.如之前任一權(quán)利要求所述的數(shù)據(jù)處理裝置,其中該輸入數(shù)據(jù)元素及該系數(shù)數(shù)據(jù)元素中的至少一個為包含實(shí)部及虛部的復(fù)數(shù);該乘法_累積處理的每一迭代包含并行執(zhí)行N個復(fù)數(shù)乘法-累積運(yùn)算以便產(chǎn)生N個復(fù)數(shù)乘法-累積數(shù)據(jù)元素;以及該N個乘法-累積結(jié)果輸出為復(fù)數(shù)。
16.如權(quán)利要求15所述的數(shù)據(jù)處理裝置,其中該輸入數(shù)據(jù)元素及該系數(shù)數(shù)據(jù)元素二者皆為包含實(shí)部及虛部的復(fù)數(shù)。
17.如權(quán)利要求15或16所述的數(shù)據(jù)處理裝置,其中每一復(fù)數(shù)乘法_累積運(yùn)算涉及執(zhí)行一系列的乘法、加法,及減法運(yùn)算,以便產(chǎn)生相應(yīng)復(fù)數(shù)乘法_累積數(shù)據(jù)元素的實(shí)部及虛部。
18.如權(quán)利要求15-17中任一項(xiàng)所述的數(shù)據(jù)處理裝置,其中所述系數(shù)數(shù)據(jù)元素為復(fù)數(shù), 且在每一迭代中,該復(fù)數(shù)系數(shù)數(shù)據(jù)元素在執(zhí)行該N個復(fù)數(shù)乘法-累積運(yùn)算之前取共軛。
19.如之前任一權(quán)利要求所述的數(shù)據(jù)處理裝置,其中所述乘法-累積運(yùn)算為乘法-減法運(yùn)算。
20.如從屬于權(quán)利要求3的之前任一權(quán)利要求所述的數(shù)據(jù)處理裝置,其中由該指令譯碼器電路產(chǎn)生的控制信號中的一個指定是否需要舍入,且若需要舍入,則該狀態(tài)機(jī)被布置以使得將舍入增量注入在所述多個迭代中的一個中執(zhí)行的每一乘法_累積運(yùn)算中。
21.如之前任一權(quán)利要求所述的數(shù)據(jù)處理裝置,其中由該指令譯碼器電路產(chǎn)生的控制信號中的一個指定要產(chǎn)生的乘法_累積數(shù)據(jù)元素是飽和的還是非飽和的,且該SIMD數(shù)據(jù)處理電路中的累積電路取決于所述控制信號而被配置。
22.如之前任一權(quán)利要求所述的數(shù)據(jù)處理裝置,其中所述標(biāo)量值小于或等于N。
23.如權(quán)利要求22所述的數(shù)據(jù)處理裝置,其中若需要N+Q個迭代,其中Q小于或等于N, 則第一重復(fù)MAC指令具有指示N個迭代的標(biāo)量值,且之后是另一重復(fù)MAC指令,該另一重復(fù) MAC指令具有指示Q個迭代的標(biāo)量值,且將由該SIMD數(shù)據(jù)處理電路響應(yīng)于該第一重復(fù)MAC 指令而產(chǎn)生的該N個乘法-累積結(jié)果識別為初始乘法_累積數(shù)據(jù)元素的向量。
24.如之前任一權(quán)利要求所述的數(shù)據(jù)處理裝置,其中若由該重復(fù)MAC指令指定的所述標(biāo)量值大于可被執(zhí)行的迭代的最大數(shù)目,則該標(biāo)量值被設(shè)定為等于所述最大數(shù)目,且所述 SIMD數(shù)據(jù)處理電路執(zhí)行所述乘法_累積處理的所述最大數(shù)目的迭代。
25.如之前任一權(quán)利要求所述的數(shù)據(jù)處理裝置,其中該指令譯碼器電路響應(yīng)于一系列的重復(fù)MAC指令而產(chǎn)生控制信號,來控制所述SIMD數(shù)據(jù)處理電路以執(zhí)行一系列的乘法_累積級,每一乘法_累積級執(zhí)行所述乘法_累積處理的所述多個迭代,且至少一個乘法_累積級使用由先前乘法_累積級所產(chǎn)生的該N個乘法-累積結(jié)果作為輸入。
26.如權(quán)利要求1-24中任一項(xiàng)所述的數(shù)據(jù)處理裝置,其中該指令譯碼器電路響應(yīng)于單一重復(fù)MAC指令而產(chǎn)生控制信號,來控制所述SIMD數(shù)據(jù)處理電路以執(zhí)行至少兩個乘法_累積級,每一乘法_累積級執(zhí)行所述乘法_累積處理的所述多個迭代,其中每一乘法_累積級所需的輸入數(shù)據(jù)元素及系數(shù)數(shù)據(jù)元素是根據(jù)該第一向量及該第二向量決定的。
27.如權(quán)利要求25或26所述的數(shù)據(jù)處理裝置,其中該多個乘法_累積級用以對復(fù)數(shù)執(zhí)行重復(fù)的MAC運(yùn)算。
28.一種使用SIMD數(shù)據(jù)處理電路及指令譯碼器電路來處理數(shù)據(jù)的方法,該SIMD數(shù)據(jù)處理電路響應(yīng)于控制信號而對多個數(shù)據(jù)元素并行執(zhí)行數(shù)據(jù)處理運(yùn)算,該指令譯碼器電路耦合至所述SIMD數(shù)據(jù)處理電路且響應(yīng)于程序指令而產(chǎn)生所述控制信號,所述方法包含以下步驟對將輸入數(shù)據(jù)元素的第一向量、系數(shù)數(shù)據(jù)元素的第二向量、以及指示所需的多個迭代M 的標(biāo)量值作為輸入操作數(shù)的重復(fù)乘法-累積(重復(fù)MAC)指令進(jìn)行譯碼,以產(chǎn)生控制信號;以及用所述控制信號控制所述SIMD數(shù)據(jù)處理電路,以由下述步驟產(chǎn)生乘法_累積結(jié)果執(zhí)行乘法_累積處理的所述多個迭代,該乘法_累積處理的每一迭代包含并行執(zhí)行N 個乘法_累積運(yùn)算,以便產(chǎn)生N個乘法-累積數(shù)據(jù)元素;對于每一迭代,決定來自所述第一向量的N個輸入數(shù)據(jù)元素、以及來自所述第二向量的要在該N個乘法-累積運(yùn)算期間與該N個輸入數(shù)據(jù)元素中的每一個相乘的單一系數(shù)數(shù)據(jù)元素;以及輸出自在該乘法_累積處理的最后迭代中產(chǎn)生的該N個乘法-累積數(shù)據(jù)元素導(dǎo)出的N 個乘法-累積結(jié)果。
29.一種數(shù)據(jù)處理裝置的虛擬機(jī)實(shí)施,所述虛擬機(jī)實(shí)施響應(yīng)于將輸入數(shù)據(jù)元素的第一向量、系數(shù)數(shù)據(jù)元素的第二向量、以及指示所需的多個迭代M的標(biāo)量值作為輸入操作數(shù)的重復(fù)乘法_累積(重復(fù)MAC)指令,以由下述步驟產(chǎn)生乘法_累積結(jié)果執(zhí)行乘法_累積處理的所述多個迭代,該乘法_累積處理的每一迭代包含并行執(zhí)行N 個乘法_累積運(yùn)算,以便產(chǎn)生N個乘法-累積數(shù)據(jù)元素;對于每一迭代,決定來自所述第一向量的N個輸入數(shù)據(jù)元素、以及來自所述第二向量的要在該N個乘法-累積運(yùn)算期間與該N個輸入數(shù)據(jù)元素中的每一個相乘的單一系數(shù)數(shù)據(jù)元素;以及輸出自在該乘法_累積處理的最后迭代中產(chǎn)生的該N個乘法-累積數(shù)據(jù)元素導(dǎo)出的N 個乘法-累積結(jié)果。
30.一種數(shù)據(jù)處理裝置,包含SIMD數(shù)據(jù)處理構(gòu)件,用于響應(yīng)于控制信號而對多個數(shù)據(jù)元素并行執(zhí)行數(shù)據(jù)處理運(yùn)算;以及指令譯碼器構(gòu)件,其耦合至所述SIMD數(shù)據(jù)處理構(gòu)件,用于響應(yīng)于程序指令而產(chǎn)生所述控制信號;其中所述指令譯碼器構(gòu)件響應(yīng)于將輸入數(shù)據(jù)元素的第一向量、系數(shù)數(shù)據(jù)元素的第二向量、以及指示所需的多個迭代M的標(biāo)量值作為輸入操作數(shù)的重復(fù)乘法_累積(重復(fù)MAC)指令,而產(chǎn)生控制信號來控制所述SIMD數(shù)據(jù)處理構(gòu)件以由下述步驟產(chǎn)生乘法_累積結(jié)果執(zhí)行乘法_累積處理的所述多個迭代,該乘法_累積處理的每一迭代包含并行執(zhí)行N個乘法-累積運(yùn)算,以便產(chǎn)生N個乘法-累積數(shù)據(jù)元素;對于每一迭代,決定來自所述第一向量的N個輸入數(shù)據(jù)元素、以及來自所述第二向量的要在該N個乘法-累積運(yùn)算期間與該N個輸入數(shù)據(jù)元素中的每一個相乘的單一系數(shù)數(shù)據(jù)元素;以及 輸出自在該乘法_累積處理的最后迭代中產(chǎn)生的該N個乘法-累積數(shù)據(jù)元素導(dǎo)出的N 個乘法-累積結(jié)果。
全文摘要
一種用于執(zhí)行SIMD乘法-累積運(yùn)算的裝置及方法,其包括SIMD數(shù)據(jù)處理電路,其響應(yīng)于控制信號而對多個數(shù)據(jù)元素并行執(zhí)行數(shù)據(jù)處理運(yùn)算。指令譯碼器電路耦合至該SIMD數(shù)據(jù)處理電路,且響應(yīng)于程序指令而產(chǎn)生所需的控制信號。該指令譯碼器電路響應(yīng)于將輸入數(shù)據(jù)元素的第一向量、系數(shù)數(shù)據(jù)元素的第二向量、以及指示所需的多個迭代的標(biāo)量值作為輸入操作數(shù)的單一指令(此處被稱為重復(fù)乘法-累積指令),而產(chǎn)生控制信號來控制該SIMD處理電路。響應(yīng)于這些控制信號,該SIMD數(shù)據(jù)處理電路執(zhí)行乘法-累積處理的這些多個迭代,每一迭代涉及并行執(zhí)行N個乘法-累積運(yùn)算以便產(chǎn)生N個乘法-累積數(shù)據(jù)元素。對于每一迭代,該SIMD數(shù)據(jù)處理電路決定來自所述第一向量的N個輸入數(shù)據(jù)元素、以及來自所述第二向量的要與N個輸入數(shù)據(jù)元素中的每一個相乘的單一系數(shù)數(shù)據(jù)元素。接著使用在該乘法-累積處理的最后迭代中產(chǎn)生的N個乘法-累積數(shù)據(jù)元素,來產(chǎn)生N個乘法-累積結(jié)果。此機(jī)制提供一種用于執(zhí)行例如FIR濾波器處理所需的SIMD乘法-累積運(yùn)算的尤其有能量效益的機(jī)制。
文檔編號G06F9/302GK102197369SQ200980139996
公開日2011年9月21日 申請日期2009年9月16日 優(yōu)先權(quán)日2008年10月8日
發(fā)明者D·H·賽姆斯, M·維爾德, R·E·布魯斯 申請人:Arm有限公司