專利名稱:用于混移運(yùn)算的微處理器設(shè)備和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種微處理器設(shè)備,包括具有至少一個(gè)功能矢量處理器單元的矢量處理器結(jié)構(gòu),所述功能矢量處理器單元包括用于存儲(chǔ)多個(gè)索引矢量(index vector)的存儲(chǔ)器裝置和處理裝置,所述功能矢量處理器單元被配置用于接收處理指令和要處理的至少一個(gè)輸入矢量,所述存儲(chǔ)器裝置被配置用于根據(jù)處理指令,向處理裝置提供所述多個(gè)索引矢量之一,以及處理裝置被配置用于響應(yīng)所述指令來(lái)產(chǎn)生至少一個(gè)輸出矢量,所述輸出矢量具有根據(jù)所提供的所述一個(gè)索引矢量重新設(shè)置的至少一個(gè)輸入矢量的元素。相應(yīng)地,本發(fā)明涉及一種用于處理矢量的方法,包括步驟接收處理指令和要處理的至少一個(gè)輸入矢量;在第一存儲(chǔ)器裝置中存儲(chǔ)多個(gè)索引矢量;根據(jù)處理指令選擇所述多個(gè)索引矢量之一;以及響應(yīng)所述指令,產(chǎn)生至少一個(gè)輸出矢量,所述輸出矢量具有根據(jù)所提供的所述一個(gè)索引矢量重新設(shè)置的所述至少一個(gè)輸入矢量的元素。
背景技術(shù):
幾十年來(lái),很好地建立了在下文中稱作矢量處理器的微處理器設(shè)備和方法。代替或除了由僅采用標(biāo)量處理器結(jié)構(gòu)的微處理器所提供的標(biāo)量指令,矢量處理器提供矢量指令集(與以上矢量或并行結(jié)構(gòu)相反)。典型地,每一個(gè)指令規(guī)定了包含多個(gè)數(shù)據(jù)字或矢量元素的運(yùn)算數(shù)矢量,該運(yùn)算數(shù)矢量的長(zhǎng)度(矢量元素的個(gè)數(shù))、以及要應(yīng)用的運(yùn)算。矢量處理的優(yōu)勢(shì)在于,代替針對(duì)單個(gè)數(shù)據(jù)字的連續(xù)運(yùn)算,允許在所述矢量指令之一內(nèi),同時(shí)針對(duì)全部矢量進(jìn)行運(yùn)算,從而提高了計(jì)算速度。例如,通過(guò)單個(gè)存儲(chǔ)器存取,矢量處理器將從外部存儲(chǔ)器連續(xù)地得到全部矢量,然后將連續(xù)地對(duì)矢量進(jìn)行運(yùn)算,最后通過(guò)另一單個(gè)存取連續(xù)地存儲(chǔ)回外部存儲(chǔ)器。因此,矢量處理是一種單指令多數(shù)據(jù)(SIMD)并行處理技術(shù)。通過(guò)使用矢量寄存器結(jié)構(gòu),甚至可以進(jìn)一步地提高計(jì)算速度,所述矢量寄存器結(jié)構(gòu)允許處理器在靠近處理器的其他功能單元的集成矢量寄存器中保持中間結(jié)果,從而減小了臨時(shí)存儲(chǔ)需求、內(nèi)部指令等待時(shí)間等。
存在許多不同類型的矢量指令,可以將其中的一些分類為矢量-矢量指令,規(guī)定了針對(duì)一個(gè)或多個(gè)矢量的運(yùn)算,例如對(duì)矢量進(jìn)行移位或混移(shuffle)、或者對(duì)兩個(gè)或更多矢量進(jìn)行逐元素地加、減、乘或除;矢量-標(biāo)量指令,規(guī)定了針對(duì)矢量和標(biāo)量的運(yùn)算,例如標(biāo)量乘積;矢量-標(biāo)量指令(矢量-減小),規(guī)定了針對(duì)一個(gè)或更多矢量的運(yùn)算,并且傳遞諸如矢量積之類的標(biāo)量;以及矢量-存儲(chǔ)器指令,規(guī)定了加載和存儲(chǔ)運(yùn)算以在外部存儲(chǔ)器和集成矢量寄存器之間傳送數(shù)據(jù)。依據(jù)任務(wù),甚至可以實(shí)現(xiàn)更復(fù)雜的指令,例如,規(guī)定了根據(jù)矢量產(chǎn)生陣列的陣列運(yùn)算等。此外,規(guī)定了針對(duì)矢量的邏輯運(yùn)算的指令也是可能的。在近來(lái)的發(fā)展中,將多個(gè)矢量指令封裝在單個(gè)指令字中并且并行地執(zhí)行,從而,再一次提高了處理速度。該處理類型稱作非常長(zhǎng)指令字(VLIW)并行處理技術(shù)。
所有這些指令由相應(yīng)的功能單元(FU)來(lái)執(zhí)行。例如,稱作矢量存儲(chǔ)單元(VMU)的對(duì)矢量-存儲(chǔ)器指令負(fù)責(zé)的FU包含集成的矢量寄存器,以及用于接收和執(zhí)行矢量-存儲(chǔ)器指令的處理裝置。根據(jù)如下所述的指令,這些處理裝置將所請(qǐng)求的矢量元素從外部存儲(chǔ)器加載到它的矢量寄存器中,或?qū)⑹噶吭卮鎯?chǔ)到外部存儲(chǔ)器中。通常,VMU是與處理器外部的“外部世界”相連的唯一FU。在支持VLIW的矢量處理器中集成了附加的指令分布單元(IDU),用于接收非常長(zhǎng)指令字,并使指令繼續(xù)或分發(fā)至其他功能單元。
存在多個(gè)矢量-存儲(chǔ)器指令,允許處理器根據(jù)在外部存儲(chǔ)器中對(duì)矢量元素進(jìn)行尋址的不同存取模式來(lái)對(duì)存儲(chǔ)器進(jìn)行存取。如果矢量元素在存儲(chǔ)器中是全部鄰近的,即組成所請(qǐng)求的矢量的數(shù)據(jù)字位于相鄰的存儲(chǔ)器地址中,那么從一組存儲(chǔ)體中得到矢量是容易的任務(wù)。該存取通常稱作單位-步幅存取。在一些情況下,通過(guò)有限的恒定位移,把將要得到的數(shù)據(jù)字在存儲(chǔ)器中分離。這稱作步幅存取或步幅-n存取,其中n表示兩個(gè)相鄰矢量元素之間存儲(chǔ)器地址的距離。在這種情況下,所述指令還規(guī)定了步幅n,以便允許VMU在單個(gè)存儲(chǔ)器存取中得到全部數(shù)據(jù)。
然而,有時(shí)候?qū)⒁獜拇鎯?chǔ)器加載作為矢量的元素的數(shù)據(jù)字、和/或?qū)⒁鎯?chǔ)回存儲(chǔ)器的數(shù)據(jù)字沒有通過(guò)恒定的位移進(jìn)行均勻地分離,而是位于(預(yù)計(jì)算的)存儲(chǔ)器中的任意位置和/或按照任意順序。此外,外部存儲(chǔ)器的所述P個(gè)存儲(chǔ)體的順序通常與矢量元素的檢索/傳遞順序不相匹配。為了允許處理器對(duì)在單個(gè)矢量-存儲(chǔ)器指令中任意分布的元素?cái)?shù)據(jù)進(jìn)行存取,VMU必須還具有表示其中存儲(chǔ)了矢量元素的全部存儲(chǔ)器位置的地址。這是通過(guò)矢量-存儲(chǔ)器指令來(lái)實(shí)現(xiàn)的,稱作“收集-指令”,提供了包含地址元素的地址矢量。因此,提供所謂的“分散-指令”(另一個(gè)矢量-存儲(chǔ)器指令),允許處理器根據(jù)在單個(gè)存儲(chǔ)器存取中給定的地址矢量來(lái)將矢量元素存儲(chǔ)至存儲(chǔ)器。
在當(dāng)數(shù)據(jù)字位于存儲(chǔ)器中任意位置時(shí)的情況下,要求在開始的段落中描述的功能單元(在下文中也稱作混移單元SFU)對(duì)從存儲(chǔ)器獲得的數(shù)據(jù)元素進(jìn)行重新設(shè)置。對(duì)混移單元進(jìn)行編程包括向混移單元提供包含“混移圖案”的上述索引矢量。在混移圖案中的每一個(gè)元素規(guī)定了源元素的位置。在圖1中,給出了收集指令的說(shuō)明。其中,第一寄存器110提供存儲(chǔ)器的起始地址(100)。第二寄存器120提供將要加載的矢量的長(zhǎng)度(4)。例如,混移圖案或索引矢量130在位置1處指定值4。因此,必須將輸入(矢量)的元素4的內(nèi)容復(fù)制到輸出矢量150的位置1,在這種情況下輸入的元素4是起始地址之后存儲(chǔ)器140中的第四個(gè)元素,輸出矢量150是由程序所請(qǐng)求的矢量,等等。
在可選的混移方案中,代替如在以上示例中指定源位置,將提供矢量?jī)?nèi)部元素的目的地位置。然而,這不是普遍的。
在分散或收集運(yùn)算中,由地址矢量中的地址元素的最低有效位來(lái)確定適當(dāng)?shù)幕煲茍D案,以及更精確地,輸入到SFU中的處理指令。例如,在其他應(yīng)用中,根據(jù)軟件代碼,可以來(lái)要求按照比特反轉(zhuǎn)的地址順序來(lái)讀取FFT輸入塊的(P大小的)段,混移圖案由代碼來(lái)直接確定。在上述矢量處理器的情況下,將多個(gè)混移圖案存儲(chǔ)在專用混移存儲(chǔ)器裝置中的混移處理裝置附近。在圖2中示意性地給出了SFU的公知硬件實(shí)現(xiàn)的示例。SFU 200包括P個(gè)多路復(fù)用器212、214、...、216的陣列210,每一個(gè)多路復(fù)用器均具有用于要處理的輸入矢量240的P個(gè)輸入,并且具有用于索引矢量或混移圖案的已賦值元素的一個(gè)輸入。根據(jù)輸入指令222從混移存儲(chǔ)器220中選擇混移圖案(例如,從地址矢量或用于輸入矢量元素的重新設(shè)置的程序代碼中提取),以便獲得所請(qǐng)求的輸出矢量250。可選的實(shí)現(xiàn)可能基于開關(guān)矩陣等。
在通過(guò)SFU重新設(shè)置了地址矢量元素之后,通過(guò)VMU得到數(shù)據(jù)字,然后,再次進(jìn)行重新設(shè)置,以便遵照所請(qǐng)求地址的位置。再次,可以從地址元素的最低有效位中獲得適合的混移圖案。
按照這種方式,可以應(yīng)用根據(jù)在先計(jì)算的混移圖案的混移,從而以適當(dāng)?shù)捻樞颢@得數(shù)據(jù)。典型地,幾乎沒有混移圖案滿足給定的應(yīng)用(例如分散或收集存儲(chǔ)器存取或計(jì)算機(jī)代碼),假設(shè)可以無(wú)需修改地重新使用用于存儲(chǔ)體的存取圖案。然而,如果此種限制提高,則混移圖案的數(shù)目將顯著增加,或者混移圖案不得不在旋轉(zhuǎn)運(yùn)算之后,等等。前者可能導(dǎo)致許多附加的存儲(chǔ)器業(yè)務(wù)量,后者花費(fèi)了附加的運(yùn)算周期,因此花費(fèi)了計(jì)算速度。
發(fā)明內(nèi)容
因此,本發(fā)明的一個(gè)目的在于改進(jìn)上述微處理器,以便使混移配置圖案的數(shù)目最小化,而不會(huì)引起計(jì)算速度的降低。
根據(jù)本發(fā)明的第一方面,該目的通過(guò)在開始段落中描述的矢量處理器來(lái)實(shí)現(xiàn),其中,所述功能矢量處理器還包括預(yù)處理裝置,配置用于在根據(jù)處理過(guò)的索引矢量產(chǎn)生所述至少一個(gè)輸出矢量之前,接收參數(shù)并且依據(jù)所述參數(shù)對(duì)所述一個(gè)索引矢量的元素進(jìn)行處理。
包括該預(yù)處理裝置的、具有FU(例如SFU)的矢量處理器結(jié)合了根據(jù)規(guī)定的混移圖案的數(shù)據(jù)(或地址)矢量中的混移元素的功能,以及另一對(duì)由所述參數(shù)(優(yōu)選地為標(biāo)量值)表示的數(shù)據(jù)矢量進(jìn)行處理的功能。盡管在現(xiàn)有技術(shù)硬件實(shí)現(xiàn)的情況下,混移運(yùn)算和另一數(shù)據(jù)處理(重新排序等)要求兩個(gè)連續(xù)的步驟和兩個(gè)開關(guān)網(wǎng)絡(luò),每一個(gè)開關(guān)網(wǎng)絡(luò)均具有本身的控制或兩個(gè)網(wǎng)絡(luò)重新使用,根據(jù)本發(fā)明的混移和另一數(shù)據(jù)處理可以在單個(gè)步驟中進(jìn)行,并且可以將所述控制結(jié)合到單個(gè)控制步驟中。即,因?yàn)閷?shí)際上對(duì)索引矢量本身進(jìn)行處理,并且索引矢量和參數(shù)(象在許多結(jié)構(gòu)中那樣)在輸入數(shù)據(jù)矢量之前到達(dá)一個(gè)或多個(gè)時(shí)鐘周期,所以可以提前執(zhí)行索引矢量的處理。最后,可以在單個(gè)時(shí)鐘周期中執(zhí)行以已(預(yù))處理過(guò)的索引矢量為基礎(chǔ)的數(shù)據(jù)矢量的混移。根據(jù)本發(fā)明的矢量處理器可以用于加速一大類算法,具體地結(jié)合了分散-收集存儲(chǔ)器存取,從而保持附加的存儲(chǔ)器業(yè)務(wù)量處于較低級(jí)別。
索引矢量的(預(yù))處理通??梢允轻槍?duì)索引矢量和參數(shù)或標(biāo)量值的任意算術(shù)或邏輯運(yùn)算。通過(guò)采用本發(fā)明,原理上,甚至也可以在單個(gè)步驟中執(zhí)行比特-處理運(yùn)算。在上下文中,比特-處理運(yùn)算表示結(jié)合寬帶媒體處理器(1996年8月,IEEE Micro,36-38頁(yè),“Micro Unity’s MediaProcessor Architecture”)描述的運(yùn)算。這些通用化的切換指令按照不同方式改變了矢量元素的設(shè)置。從而,在單個(gè)指令中執(zhí)行了許多一般要求的重新設(shè)置,并且甚至可以通過(guò)三個(gè)指令的序列獲得任意的重新設(shè)置。組-混移、組-混合(swizzle)、組-提取、組-壓縮、組-沉積、組-合并-沉積、組-去除、組-移位、以及組-旋轉(zhuǎn)運(yùn)算是此種單個(gè)指令運(yùn)算的一些示例。根據(jù)特定指令(明確地規(guī)定了重新設(shè)置的“程度”)的緊鄰字段對(duì)幾個(gè)參數(shù)進(jìn)行解碼。例如,在組-混移指令的情況下,三個(gè)指令參數(shù)通常規(guī)定了對(duì)矢量進(jìn)行混移的大小(以比特為單位)、矢量的大小和混移的程度。在其他指令中,可以減小參數(shù)的特定數(shù)目。
根據(jù)構(gòu)成了第一方面的另一發(fā)展的本發(fā)明第二方面,所述功能矢量處理器單元的還包括用于存儲(chǔ)多個(gè)參數(shù)的第二存儲(chǔ)器裝置,所述第二存儲(chǔ)裝置被配置用于根據(jù)處理指令,向所述預(yù)處理裝置提供所述參數(shù)之一。這些第二存儲(chǔ)器裝置還稱作偏移存儲(chǔ)器。
當(dāng)作為標(biāo)量值的參數(shù)不是編譯時(shí)間常數(shù)時(shí),這可能是有用的。與矢量單元并行運(yùn)算的標(biāo)量處理單元可以計(jì)算這些“偏移”,并且將其存儲(chǔ)在所示偏移存儲(chǔ)器中。
根據(jù)構(gòu)成第一或第二方面另一發(fā)展的本發(fā)明第三方面,所述預(yù)處理裝置被配置用于接收具有符號(hào)的標(biāo)量值作為參數(shù),并且依據(jù)所述標(biāo)量值和所述符號(hào)來(lái)處理所述索引矢量的元素。
這允許更多個(gè)所得到的索引矢量,而無(wú)需提高預(yù)處理功能的數(shù)目。
根據(jù)構(gòu)成第一至第三方面的任一發(fā)展的本發(fā)明第四方面,所述預(yù)處理裝置被配置用于對(duì)所述一個(gè)索引矢量的每一個(gè)元素和所述參數(shù)的執(zhí)行模加法。
根據(jù)該方面對(duì)所述一個(gè)索引矢量進(jìn)行處理包括向每一個(gè)元素添加常數(shù)值模數(shù)P(優(yōu)選地為矢量的長(zhǎng)度),這導(dǎo)致了針對(duì)數(shù)據(jù)矢量的組合的混移和旋轉(zhuǎn)運(yùn)算。在這些情況下,在下文中參數(shù)或標(biāo)量值也稱作旋轉(zhuǎn)偏移(L)。該實(shí)施方式考慮了,在典型的應(yīng)用中使用的混移圖案是相關(guān)的,并且通常是前一個(gè)混移圖案的旋轉(zhuǎn)。應(yīng)注意在許多應(yīng)用中,還連續(xù)多次地重復(fù)使用旋轉(zhuǎn)偏移。因此,具體地,通過(guò)將旋轉(zhuǎn)功能集成到SFU中,可以將附加的存儲(chǔ)器運(yùn)輸量保持處于較低級(jí)別。在旋轉(zhuǎn)運(yùn)算情況下,將這些第二存儲(chǔ)器裝置稱作旋轉(zhuǎn)偏移存儲(chǔ)器。
在根據(jù)第四方面的模加法和根據(jù)第三方面的帶符號(hào)標(biāo)量值的組合中,例如,帶負(fù)標(biāo)號(hào)的L可以表示右旋轉(zhuǎn)方向,帶正符號(hào)的L可以表示左旋轉(zhuǎn)方向,以及L=0表示輸入矢量的0旋轉(zhuǎn)(如果出現(xiàn),則無(wú)需重新加載旋轉(zhuǎn)偏移存儲(chǔ)器)。輸入矢量的旋轉(zhuǎn)是混移的特定情況。因此,可以通過(guò)對(duì)混移圖案
的預(yù)處理獲得的混移圖案[L,L+1,L+2,...,P-1,0,1,...,L-1]來(lái)指定旋轉(zhuǎn)了多個(gè)+L位置(L<P)的左旋轉(zhuǎn),所述混移圖案
將每一個(gè)輸入矢量元素映射到相同位置上的處理過(guò)的輸出矢量中。更精確地,預(yù)處理過(guò)的混移圖案可以表示為[(0+L)模P,(1+L)模P,(2+L)模P,...、(P+L)模P]。由于根據(jù)本發(fā)明的SFU使索引矢量或混移圖案的元素(預(yù))遞增了旋轉(zhuǎn)偏移L的值(注意,該預(yù)遞增必須進(jìn)行模P運(yùn)算),所以可以顯著地減小混移存儲(chǔ)裝置中單獨(dú)的索引矢量的數(shù)目(即減小因子P),而無(wú)需經(jīng)歷計(jì)算速度的降低。
根據(jù)構(gòu)成了第一至第三方面的任一發(fā)展的本發(fā)明第五方面,所述預(yù)處理裝置被配置用于執(zhí)行所述一個(gè)索引矢量的每一個(gè)元素與所述參數(shù)的飽和相加(saturated addition)。
索引矢量元素與參數(shù)或標(biāo)量值的該飽和相加導(dǎo)致了針對(duì)輸入數(shù)據(jù)或地址矢量的組合混移或移位運(yùn)算。左/右移位L個(gè)位置可以理解成是左/右旋轉(zhuǎn)的特殊情況,其中將右側(cè)或左側(cè)(依據(jù)移位方向)的L個(gè)空閑位置用預(yù)設(shè)常數(shù)填充,例如值0。這是通過(guò)用所述飽和相加/相減來(lái)代替模相加/相減來(lái)實(shí)現(xiàn)的,其中源索引(source-index)值-1和P-1指的是預(yù)設(shè)常數(shù)。-1的值表示目標(biāo)寄存器中相應(yīng)元素中的元素不應(yīng)該被重寫。因此,索引值可以在-1至P-1的范圍內(nèi)變化。
根據(jù)構(gòu)成了第一至第三方面的任一發(fā)展的本發(fā)明第六方面,所述預(yù)處理裝置配置用于針對(duì)所述一個(gè)索引矢量的每一個(gè)元素與所述參數(shù)執(zhí)行“異或”運(yùn)算。
這種利用輸入(數(shù)據(jù))矢量的后續(xù)混移運(yùn)算的針對(duì)索引矢量的運(yùn)算可以用于實(shí)現(xiàn)將在下面解釋的“蝶形混移”運(yùn)算。蝶形混移廣泛地用于象FFT、DCT和FHT(快速哈達(dá)馬變換)的內(nèi)核中。在這些內(nèi)核中,蝶形運(yùn)算的(步長(zhǎng))大小或增量通常隨著階段而變化。因?yàn)樵隽渴侵苯佑稍诿恳粋€(gè)索引矢量元素上執(zhí)行的“異或”運(yùn)算的運(yùn)算數(shù)的標(biāo)量輸入值來(lái)確定的,所以根據(jù)本發(fā)明的這一方面的實(shí)施方式是有利的。否則,每當(dāng)?shù)蔚拇笮∽兓瘜?dǎo)致更多的數(shù)據(jù)業(yè)務(wù)量時(shí),必須加載新的混移圖案。
根據(jù)本發(fā)明的第七方面,以上目的還通過(guò)在開始段落中所述的方法來(lái)實(shí)現(xiàn),其中,在產(chǎn)生所述最小一個(gè)輸出矢量的步驟之前,執(zhí)行接收參數(shù)和依據(jù)所述參數(shù)對(duì)所述一個(gè)索引矢量的元素進(jìn)行處理的另外步驟。
主要應(yīng)用領(lǐng)域是矢量處理,因?yàn)槠淅鐟?yīng)用于CVP(研究)中,參見在World Wireless Congress 2003,在OnDSP(PS-Dresden,formerlySystemonic),以及在EVP(PS’DSP Innovation Centre)中,C.H.(Kees)vanBerkel,Patrick P.E.Meuwissen,Nur Engin,and S.Balakrishnan,“CVPAProgrammable Co Vector Proceessor for 3G Mobile Baseband Processing”。以上發(fā)明可以對(duì)多個(gè)信號(hào)處理內(nèi)核進(jìn)行顯著地加速。這對(duì)于(靠近)存儲(chǔ)器范圍和具有不規(guī)則存取圖案的應(yīng)用尤為如此。示例包括視頻編解碼、FFT、格式轉(zhuǎn)換、交錯(cuò)存取等。
根據(jù)結(jié)合附圖的優(yōu)選實(shí)施例的以下描述,本發(fā)明的以上和其他目的、特征和優(yōu)勢(shì)將變得顯而易見,其中圖1示出了技術(shù)發(fā)展水平的混移單元的功能(無(wú)需預(yù)旋轉(zhuǎn));圖2是示出了混移單元(SFU)的技術(shù)發(fā)展水平實(shí)施方式的方框圖;
圖3是示出了根據(jù)本發(fā)明的具有預(yù)旋轉(zhuǎn)能力的FU實(shí)施方式的方框圖;圖4是示出了根據(jù)圖3的FU的控制的方框圖;圖5是從Golay相關(guān)器的實(shí)施方式中提取的程序代碼的一部分;圖6示出了根據(jù)圖5代碼的存儲(chǔ)器存取的說(shuō)明;圖7是通過(guò)針對(duì)快速傅立葉變換(FFT)的比特反轉(zhuǎn)存取的程序代碼來(lái)應(yīng)用組合的混移和旋轉(zhuǎn)功能的另一個(gè)示例;圖8示出了針對(duì)32點(diǎn)FFT存儲(chǔ)器存取圖案的比特反轉(zhuǎn)排列(permutation);以及圖9A和圖9B示出了具有在相同的32元素輸入矢量上執(zhí)行的不同大小的兩個(gè)蝶形混移運(yùn)算。
具體實(shí)施例方式
具有如圖3示意性所示的根據(jù)本發(fā)明實(shí)施例的預(yù)旋轉(zhuǎn)能力的FU 300包括處理裝置,并且更精確地,包括示出為并行設(shè)備的P個(gè)多路復(fù)用器312、314、...、316的陣列310,但是可以通過(guò)更少(下至一個(gè))的設(shè)備和串行的處理步驟來(lái)實(shí)現(xiàn)。每一個(gè)多路復(fù)用器均具有與輸入矢量320的P個(gè)元素相對(duì)應(yīng)的P個(gè)輸入。將另一輸入提供給索引矢量或混移圖案的已賦值元素,所述索引矢量或混移圖案的已賦值元素是根據(jù)輸入指令322從FU 300的存儲(chǔ)裝置(混移存儲(chǔ)器320)中選擇的。然而,在將索引矢量元素輸入到多路復(fù)用器312、314、316之前,由預(yù)處理裝置(更精確地,由包括多(P)個(gè)模加法器的組合器360)對(duì)所述索引矢量元素進(jìn)行模相加。旋轉(zhuǎn)的方向和幅度由標(biāo)量輸入332來(lái)確定。例如,從地址矢量或程序代碼中提取輸入指令322和標(biāo)量輸入332。在對(duì)索引矢量本身進(jìn)行處理之后,將它輸入用于將輸入矢量340混移到多路復(fù)用器陣列310中,以便獲得所請(qǐng)求的輸出矢量350。
圖4的方框圖以更加一般的方式示出了可以通過(guò)單個(gè)控制步驟來(lái)啟動(dòng)由FU執(zhí)行的輸入數(shù)據(jù)或地址矢量440的組合混移和數(shù)據(jù)處理(旋轉(zhuǎn)、平移、蝶形等運(yùn)算)。預(yù)處理裝置460接收混移圖案430和標(biāo)量輸入432,并且向處理裝置410輸出單個(gè)指令矢量。該指令矢量包含預(yù)處理過(guò)的混移圖案。
從Golay相關(guān)器的實(shí)施方式中提取根據(jù)圖5的程序代碼的部分。例如,將Golay相關(guān)器用于第三代移動(dòng)技術(shù)中,使用基本同步代碼(PSC)的分級(jí)相關(guān)序列來(lái)進(jìn)行小區(qū)搜索。這只是示出了無(wú)數(shù)示例中的一個(gè),這些示例示出了在軟件應(yīng)用中使用的混移圖案與存儲(chǔ)器存取相關(guān),以及甚至經(jīng)常是前一個(gè)混移圖案的連續(xù)多次重新使用的旋轉(zhuǎn)偏移的旋轉(zhuǎn)。在該示例中,通過(guò)四次存儲(chǔ)器存取(read1至read4)得到8個(gè)(復(fù)數(shù))元素的矢量,從而因?yàn)樾D(zhuǎn)偏移等于2,所以在第四次遞增之后,存取矢量(假設(shè)//已對(duì)齊)在ptr處被再次對(duì)齊。
根據(jù)圖5代碼的存儲(chǔ)器存取如圖6所示。其中,在左邊示出存儲(chǔ)器610、620、630、640中的兩個(gè)連續(xù)矢量位置,以及在右邊的611、621、631、641示出來(lái)自存儲(chǔ)器的相應(yīng)輸出(來(lái)自SFU觀點(diǎn)的輸入矢量)。在存儲(chǔ)器輸出以下直接示出最終的混移-旋轉(zhuǎn)數(shù)據(jù)矢量612、622、632、642。為了簡(jiǎn)化和更好地理解,輸入矢量的處理是簡(jiǎn)單旋轉(zhuǎn)(plain rotation)。簡(jiǎn)單旋轉(zhuǎn)意味著在第一存儲(chǔ)器存取(read1)中無(wú)需重新設(shè)置,這可以使用具有與他們的位置相等的索引矢量來(lái)實(shí)現(xiàn),并且每一個(gè)下面的存儲(chǔ)器存取要求旋轉(zhuǎn)。具體地?zé)o需混移的用于第一存儲(chǔ)器存取的混移圖案[7,6,5,4,3,2,1,0]導(dǎo)致第一輸出矢量612具有與從存儲(chǔ)器610獲得的相同順序的元素。然后,對(duì)相同的混移圖案(使用中)與標(biāo)量值6進(jìn)行模8求和,從而提供混移圖案[5,4,3,2,1,0,7,6]。該預(yù)處理過(guò)的混移圖案使從存儲(chǔ)器存取(read2)獲得的輸入數(shù)據(jù)矢量621向左旋轉(zhuǎn)兩個(gè)元素,以便獲得輸出數(shù)據(jù)矢量622。在下一個(gè)步驟中,對(duì)初始的混移圖案[7,6,5,4,3,2,1,0]與標(biāo)量值4進(jìn)行模8求和,從而提供混移圖案[3,2,1,0,7,6,5,4]。該混移圖案用于將通過(guò)下一存儲(chǔ)器存取(read3)獲得的輸入矢量631進(jìn)行混移和(實(shí)際上簡(jiǎn)單的)旋轉(zhuǎn)至具有向左旋轉(zhuǎn)4個(gè)元素的輸出矢量632。并且使用通過(guò)初始混移圖案和標(biāo)量值2的模求和得到的混移圖案[1,0,7,6,5,4,3,2],對(duì)通過(guò)存儲(chǔ)器存取(read4)獲得的最終的輸入矢量641向左旋轉(zhuǎn)6個(gè)元素。這得到了輸出矢量642。在該具體應(yīng)用中,由于根據(jù)本發(fā)明矢量處理器,作為四個(gè)單獨(dú)的混移圖案的替代,將單個(gè)混移圖案與適合的“旋轉(zhuǎn)”值一起使用。
通常公知的是在許多快速傅立葉變換(FFT)實(shí)施方式中,在執(zhí)行FFT之前進(jìn)行輸入數(shù)據(jù)陣列的比特反轉(zhuǎn)排列。同樣公知的是可以使用混移功能來(lái)實(shí)現(xiàn)比特反轉(zhuǎn)排列。在這種比特反轉(zhuǎn)中,利用諸如圖7所示的permute_bitrev函數(shù),將輸入數(shù)據(jù)按照二進(jìn)制標(biāo)準(zhǔn)(即,以比特反轉(zhuǎn)順序)進(jìn)行重新設(shè)置。假設(shè)該示例中的輸入由兩個(gè)陣列的復(fù)數(shù)數(shù)據(jù)組成,一個(gè)包含實(shí)部,而另一個(gè)包含虛部。然而在示例矢量處理器中,將輸入數(shù)據(jù)存儲(chǔ)作為具有實(shí)部和虛部的復(fù)數(shù)的單個(gè)陣列,每一個(gè)復(fù)數(shù)存儲(chǔ)在相鄰的存儲(chǔ)器位置中。因此,執(zhí)行復(fù)數(shù)陣列的排列。圖7中的函數(shù)bitrev()返回如圖8的最左列所示的數(shù)字。
在圖8中,示出了32點(diǎn)FFT的比特反轉(zhuǎn)存取圖案,以及如何根據(jù)利用了預(yù)旋轉(zhuǎn)的混移運(yùn)算的本發(fā)明對(duì)它進(jìn)行改進(jìn)。在支持如前所述的“收集”運(yùn)算的體系結(jié)構(gòu)中可以非常有效地實(shí)現(xiàn)比特反轉(zhuǎn)。關(guān)于圖8,假設(shè)矢量可以容納最多8個(gè)復(fù)數(shù)數(shù)據(jù)元素,并且存儲(chǔ)體(矢量索引)的數(shù)目是8,其中存儲(chǔ)體中的存儲(chǔ)器位置可以存儲(chǔ)一個(gè)復(fù)數(shù)數(shù)據(jù)元素。所述存取圖案由(矢量數(shù)目,存儲(chǔ)體數(shù)目)元組組成。另外假設(shè)通過(guò)所示方式的DMA控制器,在存儲(chǔ)器中設(shè)置數(shù)據(jù)項(xiàng)目。如果采用了數(shù)據(jù)的未用過(guò)的存儲(chǔ)器組織,那么如果每一個(gè)存儲(chǔ)體具有單個(gè)端口,則圖8中詳細(xì)示出的存取圖案將導(dǎo)致存儲(chǔ)體沖突。例如,如圖8中的第一和第二虛線之間所示的第一組比特反轉(zhuǎn)存取使用對(duì)存儲(chǔ)體0(矢量索引=0)的四次存取,以及對(duì)存儲(chǔ)體4(矢量索引=4)的四次存取。因此,將要求對(duì)存儲(chǔ)器的串行存取,這導(dǎo)致了低效地使用可用的存儲(chǔ)器帶寬。
在這種情況下,組織數(shù)據(jù)的更智能的方式是通過(guò)一個(gè)存儲(chǔ)體對(duì)連續(xù)的矢量元素的起始地址進(jìn)行旋轉(zhuǎn)。那么,這將包括對(duì)如下表1所示的數(shù)據(jù)進(jìn)行回繞(wrapping around),以便將數(shù)據(jù)寫入矢量中。
表1偏移輸入數(shù)據(jù)以避免32點(diǎn)FFT比特反轉(zhuǎn)方案中的存儲(chǔ)體沖突
利用如表1所示的數(shù)據(jù)組織,可以無(wú)存儲(chǔ)體沖突地得到具有在特定存取中示出的矢量索引的全部數(shù)據(jù)項(xiàng)目。因此,針對(duì)每一次存取,可以使用存儲(chǔ)器的完整帶寬。然而,由存儲(chǔ)器系統(tǒng)返回的數(shù)據(jù)將不得不進(jìn)行重新設(shè)置,以獲得按照如圖8所示的數(shù)據(jù)元素的期望順序的矢量。例如,使用參考圖8詳細(xì)描述的信源編碼方案,針對(duì)比特反轉(zhuǎn)存取的混移圖案將是針對(duì)第一組(矢量號(hào)=0)的
、針對(duì)下一組(矢量號(hào)=1)的[2,4,3,5,6,0,7,1]、以及后續(xù)的[1,3,2,4,5,7,6,0]、[3,5,4,6,7,1,0,2]。應(yīng)注意,如果我們將陣列分成矢量塊,則混移圖案中的全部數(shù)字將遞增比特反轉(zhuǎn)塊數(shù)。在示例中,具有可以從0開始接續(xù)編號(hào)的四個(gè)塊。那么,塊編號(hào)將是0,1,2,3。那么,比特反轉(zhuǎn)后的塊編號(hào)將是0,2,1,3。這是對(duì)于混移圖案中的每一個(gè)元素的精確遞增。該增量實(shí)現(xiàn)了混移過(guò)的數(shù)據(jù)的旋轉(zhuǎn)。對(duì)于不同數(shù)目的點(diǎn)(2次冪)的FFT,可以實(shí)行類似的方案。
本發(fā)明的另一個(gè)實(shí)施例利用了如圖9A和圖9B所示的組合蝶形和混移運(yùn)算。在這些示例中采用了32個(gè)元素的輸入矢量911。實(shí)際上,應(yīng)用了簡(jiǎn)單蝶形運(yùn)算。換句話說(shuō),在該實(shí)例中最初從混移存儲(chǔ)器提供的索引矢量(未示出)具有內(nèi)容[31,30,...、1,0],該內(nèi)容將輸入矢量的每一個(gè)元素映射到輸出矢量中的相同位置。也可以使用任意其他初始混移圖案(或索引矢量)。然而,在對(duì)輸入矢量進(jìn)行混移之前,對(duì)索引矢量進(jìn)行預(yù)處理。更精確地,根據(jù)圖9A,相應(yīng)的預(yù)處理裝置執(zhí)行二進(jìn)制級(jí)別的索引矢量的每一個(gè)元素的“異或”運(yùn)算。從而,在圖9A的情況下的第二運(yùn)算數(shù)是輸入標(biāo)量值一。因此,索引矢量的“異或”運(yùn)算導(dǎo)致輸入(數(shù)據(jù))矢量成對(duì)地交換位置。因?yàn)槊恳粋€(gè)輸入矢量元素只跳一個(gè)位置,所以在這種情況下在輸入矢量上執(zhí)行的蝶形運(yùn)算的大小或增量是1。
根據(jù)圖9B,運(yùn)算數(shù)值等于4。因此,通過(guò)執(zhí)行每一個(gè)索引矢量元素的比特圖案的“異或”運(yùn)算,以及隨后將輸入矢量混移8,形成了每一個(gè)均包含4個(gè)連續(xù)的矢量元素的輸入矢量元素塊,并且成對(duì)地交換位置。因?yàn)槊恳粋€(gè)輸入矢量元素跳4個(gè)位置,所以在這種情況下在輸入矢量上執(zhí)行的蝶形運(yùn)算的大小是4。
本發(fā)明的使用不局限于存儲(chǔ)器存取、FFT、DCT或FHT應(yīng)用??梢詫⑵鋺?yīng)用于任意種類的應(yīng)用,并且對(duì)于(重新)使用可以由一個(gè)或幾個(gè)隨后的算法或邏輯運(yùn)算,從在前應(yīng)用的圖案推斷出的混移圖案的應(yīng)用來(lái)說(shuō)是尤為有利的。因此,可以向根據(jù)本發(fā)明的、包括具有至少一個(gè)功能矢量處理器單元的微處理器設(shè)備配備幾個(gè)不同的和/或相同的預(yù)處理裝置,所述預(yù)處理裝置配置用于接收相同的和/或不同的參數(shù)或標(biāo)量值,并且用于隨后和/或并行地處理索引矢量的元素。在幾個(gè)參數(shù)的情況下,可以根據(jù)單個(gè)或不同的指令對(duì)其進(jìn)行解碼,和/或可以從相同的或不同的第二存儲(chǔ)器裝置中得到。
權(quán)利要求
1.一種微處理器設(shè)備,包括具有至少一個(gè)功能矢量處理器單元的矢量處理器結(jié)構(gòu),所述至少一個(gè)功能矢量處理器單元包括用于存儲(chǔ)多個(gè)索引矢量的第一存儲(chǔ)器裝置和處理裝置,所述功能矢量處理器單元被配置用于接收處理指令和要處理的至少一個(gè)輸入矢量,所述第一存儲(chǔ)器裝置被配置用于根據(jù)所述處理指令,向所述處理裝置提供所述多個(gè)索引矢量之一,以及所述處理裝置被配置用于響應(yīng)所述指令來(lái)產(chǎn)生至少一個(gè)輸出矢量,所述輸出矢量具有根據(jù)所提供的所述一個(gè)索引矢量重新設(shè)置的所述至少一個(gè)輸入矢量的元素,從而所述功能矢量處理器單元還包括預(yù)處理裝置,配置用于在根據(jù)處理過(guò)的索引矢量產(chǎn)生所述至少一個(gè)輸出矢量之前,接收參數(shù)并且依據(jù)所述參數(shù)對(duì)所述一個(gè)索引矢量的元素進(jìn)行處理。
2.根據(jù)權(quán)利要求1所述的微處理器設(shè)備,其中,所述功能矢量處理單元還包括第二存儲(chǔ)器裝置,用于存儲(chǔ)多個(gè)參數(shù),所述第二存儲(chǔ)器裝置被配置用于根據(jù)所述處理指令,向所述預(yù)處理裝置提供所述多個(gè)參數(shù)之一。
3.根據(jù)權(quán)利要求1所述的微處理器設(shè)備,其中,所述預(yù)處理裝置被配置用于接收具有符號(hào)的標(biāo)量值作為參數(shù),并且依據(jù)所述標(biāo)量值和所述符號(hào)來(lái)處理所述索引矢量的元素。
4.根據(jù)權(quán)利要求1所述的微處理器設(shè)備,其中,所述預(yù)處理裝置被配置用于執(zhí)行對(duì)所述一個(gè)索引矢量的每一個(gè)元素與所述參數(shù)的模相加。
5.根據(jù)權(quán)利要求1所述的微處理器設(shè)備,其中,所述預(yù)處理裝置被配置用于執(zhí)行對(duì)所述一個(gè)索引矢量的每一個(gè)元素與所述參數(shù)的飽和相加。
6.根據(jù)權(quán)利要求1所述的微處理器設(shè)備,其中,所述預(yù)處理裝置被配置用于針對(duì)所述一個(gè)索引矢量的每一個(gè)元素與所述參數(shù)執(zhí)行“異或”運(yùn)算。
7.一種用于處理矢量的方法,包括步驟接收處理指令和要處理的至少一個(gè)輸入矢量,在第一存儲(chǔ)器裝置中存儲(chǔ)多個(gè)索引矢量;根據(jù)處理指令,選擇所述多個(gè)索引矢量之一;響應(yīng)所述指令,產(chǎn)生至少一個(gè)輸出矢量,所述輸出矢量具有根據(jù)所提供的所述一個(gè)索引矢量重新設(shè)置的所述至少一個(gè)輸入矢量的元素,所述方法的特征在于,在產(chǎn)生所述至少一個(gè)輸出矢量的步驟之前的其它步驟接收參數(shù);以及依據(jù)所述參數(shù),對(duì)所述一個(gè)索引矢量的元素進(jìn)行處理。
8.根據(jù)權(quán)利要求7所述的方法,其中,對(duì)所述一個(gè)索引矢量的元素進(jìn)行處理的所述步驟包括索引矢量的每一個(gè)元素與所述參數(shù)的模相加。
9.根據(jù)權(quán)利要求7所述的方法,其中,對(duì)所述一個(gè)索引矢量的元素進(jìn)行處理的所述步驟包括索引矢量的每一個(gè)元素與所述參數(shù)的飽和相加。
10.根據(jù)權(quán)利要求7所述的方法,其中,對(duì)所述一個(gè)索引矢量的元素進(jìn)行處理的所述步驟包括針對(duì)所述索引矢量的每一個(gè)元素與所述參數(shù)的“異或”運(yùn)算。
全文摘要
本發(fā)明涉及一種微處理器設(shè)備,包括具有功能矢量處理器單元的矢量處理器結(jié)構(gòu),所述功能矢量處理器單元包括用于存儲(chǔ)多個(gè)索引矢量的第一存儲(chǔ)器裝置和處理裝置,所述功能矢量處理器單元被配置用于接收處理指令和要處理的至少一個(gè)輸入矢量,所述第一存儲(chǔ)器裝置被配置用于根據(jù)處理指令向處理裝置提供所述多個(gè)索引矢量之一,以及處理裝置被配置用于響應(yīng)所述指令來(lái)產(chǎn)生至少一個(gè)輸出矢量,所述輸出矢量具有根據(jù)所提供的所述一個(gè)索引矢量重新設(shè)置的所述至少一個(gè)輸入矢量的元素。所述功能矢量處理器單元還包括預(yù)處理裝置,配置用于在根據(jù)處理過(guò)的索引矢量產(chǎn)生所述至少一個(gè)輸出矢量之前,接收參數(shù)并且依據(jù)所述參數(shù)來(lái)對(duì)所述一個(gè)索引矢量的元素進(jìn)行處理。本發(fā)明還涉及一種利用該功能矢量處理單元對(duì)矢量進(jìn)行處理的方法。
文檔編號(hào)G06F9/345GK101061460SQ200580039646
公開日2007年10月24日 申請(qǐng)日期2005年9月14日 優(yōu)先權(quán)日2004年9月21日
發(fā)明者科內(nèi)利斯·H·范貝爾凱, 巴拉克瑞南·斯瑞尼瓦桑 申請(qǐng)人:皇家飛利浦電子股份有限公司