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