專利名稱:矢量處理的方法
技術領域:
本申請涉及一種在矢量處理器中處理數(shù)據(jù)的方法。本申請還涉及一種用于執(zhí)行所 述方法的矢量處理器以及一種包括所述矢量處理器的蜂窩通信設備。
背景技術:
在目前高性能處理器體系結構中,由于物理限制,通過增加時鐘頻率來提高性能 達到了極限。相反,開發(fā)了提高性能的其他方法。方法之一是增加并行性,即,在單個時鐘 周期內(nèi)并行地執(zhí)行多個操作。因此,單個時鐘周期可以是處理器的基本定時單元。一種提高并行性的常見方法是利用單指令、多數(shù)據(jù)(SIMD)概念。在這種SIMD處理 器中,每個單個指令同時作用于多個數(shù)據(jù)值,對每個數(shù)據(jù)值執(zhí)行相同操作。這是通過可以在 固定長度矢量上操作的SIMD處理器來執(zhí)行的。所述固定長度矢量也可以被稱為行或數(shù)組, 并可以包括多個數(shù)據(jù)元素。例如,寬度32的16比特SIMD機對32個元素的行進行操作,每 一個元素是16比特數(shù)字,S卩,一次處理32*16 = 5612比特。根據(jù)矢量內(nèi)的位置,操作從矢量中得到自變量并產(chǎn)生結果。所述結果可以置入已 有的矢量中,如在示例操作A = -A情況下,或置入新矢量中,如在示例操作C = A+B情況下, 其中A、B和C是矢量。對于這兩種情況下,計算的結果矢量的元素在該結果矢量內(nèi)位于相 同位置,即,以0] = A
+BW],等。在圖1中,示出了根據(jù)現(xiàn)有技術的第一示例操作。第一矢量2包括元素A[i],其中 i = 1,...,N,以及第二矢量4包括B[i],其中i = 1,...,N。根據(jù)示例,SIMD指令是加法 函數(shù),其中按照與這種矢量2和4的兩個元素相對應的逐對方式來執(zhí)行加法,結果是第三結 果矢量6。對于在矢量長度內(nèi)的所有i,根據(jù)以下方程計算結果矢量。C[i] =A[i]+B[i]。應理解SIMD操作不局限于加法函數(shù),所述SIMD操作包括所有逐元素函數(shù)。SIMD處理器思想的延伸是所謂的矢量處理器。除了執(zhí)行SIMD操作的能力以外,矢 量處理器還可以執(zhí)行所謂矢量內(nèi)操作。矢量內(nèi)操作是在單個矢量內(nèi)元素之間具有相互作用 的操作。這種操作的例子是矢量內(nèi)元素的總和的計算。在純SIMD機上不能以并行操作來 執(zhí)行這種操作,這是因為這種機器僅對矢量內(nèi)相同位置的元素進行操作。作為示例,矢量內(nèi) 操作是在矢量內(nèi)元素的加法,其還可以被稱為矢量內(nèi)部相加,在矢量內(nèi)查找最大元素或最 小元素,并在矢量內(nèi)重排或置換元素。圖2示出了根據(jù)現(xiàn)有技術的第二示例操作。更具體地,圖2示出了完整矢量的內(nèi) 操作。由該圖可見,計算矢量8[i]的輸入元素的總和,i = 0,...,7,并將結果sO放置到字 段10。在圖3中示出了根據(jù)現(xiàn)有技術的第三示例操作。圖3給出了對于分段矢量12的 內(nèi)部相加操作的例子。將所示矢量12劃分為第一段14,包括元素A[i],i = 1,...,4;以及 通過參考符號16指示的其他段,包括元素A[i],i = 5,...,N??梢杂嬎忝總€段14和16 的元素總和,并置入相應結果字段18和20。在計算結構體系中,SIMD操作和矢量內(nèi)部操作的概念已經(jīng)是眾所周知的。然而,當在矢量處理器上映射算法時,在處理器中矢量的長度不總是與在算法中必須處理的數(shù)據(jù) 段(組塊)的長度匹配。例如,考慮固有矢量長度包括值16的使用情況。然而,算法可以 將輸入流劃分為8個相鄰元素的段,其必須被累積。這是例如基于Rake接收機的蜂窩通信 中的典型情況,其中Rake具有較小的擴頻因子。根據(jù)該示例,擴頻因子是8。根據(jù)圖2,簡單矢量內(nèi)部相加操作不能充分實現(xiàn)這種算法的效率,這是因為其將矢 量內(nèi)的所有元素相加。因此,為了使用標準(全寬度)內(nèi)部相加,在執(zhí)行矢量內(nèi)部加法之前, 首先在分離操作中必須使不屬于具體段的所有元素為零。此外,必須針對矢量內(nèi)的每個段 重復該過程。最后,很可能不得不在結果矢量內(nèi)重新封裝結果,在相鄰元素中傳遞計算值, 以便進一步處理。根據(jù)圖3的分段內(nèi)部相加操作提供了一種有效地計算部分總和的方法,然而,不 能提供一種以高效方式收集結果的方法。進一步地,該方法僅提供了一種針對段長度是矢 量長度的除數(shù)的解決方案。因此,本申請的一個目的是提供一種段長度沒有限制的方法。另一個目的是提供 一種以高效方式收集結果輸出流的方法。另一個目的是提高矢量處理器的效率。
發(fā)明內(nèi)容
通過一種在矢量處理器中處理數(shù)據(jù)的方法解決了這些和其他目的,所述方法包 括針對在矢量的段執(zhí)行分段操作以便產(chǎn)生結果;收集分段操作的結果;以及在結果矢量 中傳遞結果,以便后續(xù)操作保持矢量模式的處理。根據(jù)本申請,處理數(shù)據(jù)。更具體地,處理分段的數(shù)據(jù)。矢量的段包括多個元素,所 述元素包括數(shù)據(jù)。通過執(zhí)行分段操作,產(chǎn)生結果。根據(jù)本申請,發(fā)現(xiàn)通過傳遞結果矢量中的 結果以便后續(xù)操作在矢量模式中保持處理,提高了矢量處理器的效率。傳遞結果矢量中的 結果允許立即處理結果。不必改變矢量處理器的模式以便進一步處理來自矢量內(nèi)部操作的 結果。避免模式改變或附加指令實現(xiàn)了更快的處理。根據(jù)本申請方法的另一個實施例,所述方法可以包括收集分段操作的結果,以便 按照每個操作一矢量的速率來執(zhí)行處理??梢源_保快速處理。此外,根據(jù)實施例,可以在結果矢量中傳遞結果作為相鄰元素。結果矢量可以作為 傳送帶(conveyor belt)。可以確保結果矢量中的預定義命令。由于預定義結果,使收集結 果的進一步處理更容易。此外,在每個操作中可以產(chǎn)生單個結果??梢匀缟纤鰧⑺鼋Y果傳遞到結果矢 量。根據(jù)本申請的另一個實施例,在檢測到完全結果矢量之后,使用所述結果矢量以便進一 步處理。在處理相等長度的段的情況下,當傳送帶和結果矢量分別完全時,其是可預測的。 在改變段大小的情況下,該檢測處理不可能。根據(jù)本申請,可以提供一種機制來檢測傳送帶 和結果矢量分別是完全的,還是包含足夠數(shù)據(jù)來填充完整矢量并在這種情況下采取適當行 動。例如,可以設置布爾狀態(tài),或?qū)⑹噶孔詣愚D(zhuǎn)儲到存儲器。提供了按照簡單方式來簡單檢 測完全結果矢量以便啟用進一步的處理。此外,分段操作可以是矢量內(nèi)部操作。分段操作至少可以是加法操作、極值操作、 XOR操作、OR操作或AND操作。所有這些操作可以是矢量內(nèi)部操作。極值操作可以包括最 大/最小內(nèi)部操作,最大/最小內(nèi)部包括最大/最小值所在的位置。在這種情況下,"acc"結果必須包含比僅有最大/最小值更多的信息。進一步操作可以是具有精度提高的加法功 能,例如由8到16比特的符號擴展,具有飽和或內(nèi)部減法操作的加法函數(shù),如取反和相加。 可以提高用于這些操作的處理時間。 根據(jù)另一個實施例,段的大小是任意的。這包括段的大小等于矢量大小、小于矢量 大小或大于矢量大小。段可能擴展到矢量邊界以外。提供了針對不同于其大小的段的靈活 執(zhí)行。
此外,根據(jù)另一個實施例,所述方法可以包括在可編程核實施分段操作。根據(jù)本申 請的另一個實施例,至少通過專用操作碼、額外自變量和/或內(nèi)部狀態(tài)機在可編程核實施 分段操作。在可編程核,可能給出所有操作專用操作碼。對于所述簡單情況,這是可行的。 操作碼還可以用于具有相同段長度的情況。對于改變段長度和任意段長度,這或多或少是 不可行的。提供的額外自變量始終是個選項。其可以是直接的或來自寄存器。對于必須處 理后續(xù)相同大小的段的常規(guī)情況,內(nèi)部狀態(tài)機是降低程序大小的較好解決方案。例如,如果 操作已知段長度,則如果狀態(tài)包含目前矢量到第一元素所處的段的相對位置,這就足夠了。 從該完整加法和移位,可以導出下一個狀態(tài)。提供簡單可能性用于實施所述操作。本申請的另一方面是一種用于實施如上所述方法的矢量處理器。所述矢量處理器 可以同時支持矢量間的操作和矢量內(nèi)部操作。矢量間的操作是所謂SIMD操作,例如,兩個 矢量的所有元素的逐元素加法。例如,矢量內(nèi)部操作提供了相同矢量內(nèi)所有元素的加法,并 同樣操作于矢量的完全寬度上。引入矢量內(nèi)部操作以覆蓋比純SIMD可能更多的算法。本申 請描述了一種內(nèi)部操作方案,允許處理輸入元素的段,其在尺寸上不必須對應于整個矢量。 概括的講,允許任意的段大小。本申請的另一方面是一種包括如上所述矢量處理器的蜂窩通信設備。根據(jù)本申請的所述方法提供了有效處理數(shù)據(jù)的段,不固有地在處理器的矢量長度 上映射,并按照高效方式收集結果。本申請?zhí)岢隽艘环N執(zhí)行分段操作的方法,與收集結果的 方法相結合,從而能夠以每個操作一矢量的速率來執(zhí)行處理的方式,并作為相鄰元素在結 果矢量中傳遞結果,以便在矢量模式中保持處理。因此,矢量模式造成在結果矢量中不會存 在根據(jù)現(xiàn)有技術的分段操作情況下的空洞。參考下圖,本專利申請的這些和其他方面是顯而易見的,并將闡明本專利申請的 這些和其他方面。理解本申請和如上所述示例性實施例的特性,以便披露所有可能的彼此組合。
在圖中示出了 圖1根據(jù)現(xiàn)有技術的第一示例操作;圖2根據(jù)現(xiàn)有技術的第二示例操作;圖3根據(jù)現(xiàn)有技術的第三示例操作;圖4根據(jù)本申請的方法的第一示例操作;圖5根據(jù)本申請的方法的第二示例操作;圖6根據(jù)本申請的方法的第三示例操作;圖7根據(jù)本申請的方法的第四示例操作;
圖8根據(jù)本申請的方法的第五示例操作;圖9根據(jù)本申請的方法的第六示例操作。在不同圖中類似的參考數(shù)字表示類似元素。
具體實施例方式在以下本申請的詳細描述中,本申請的示例性實施例將描述以及指出一種在矢量 處理器中處理數(shù)據(jù)的方法,所述方法提供了改進的效率。為了簡單演示,在以下示例中選擇加法操作用于演示根據(jù)本申請的所述方法。根 據(jù)本申請的其他變體,應理解可以使用本申請的方法來執(zhí)行任何操作。圖4示出了根據(jù)本申請的方法的第一示例操作。描繪了第一矢量22和第二矢量 M。第一矢量22可以是結果矢量,第二矢量M可以是包括要處理的輸入元素的源或輸入 矢量。在這種情況下,數(shù)據(jù)段大小等于矢量大小。由圖4可知,計算矢量M的輸入元素[i]的總和,i = 0,. . .,7,以及按照特定方式 收集結果。更具體地,當針對多個矢量迭代該操作時,可以將結果收集到結果矢量26。換句 話說,本方法按照與傳送帶類似的方法操作。在每個操作中,矢量內(nèi)部單元產(chǎn)生單個結果。 同時,將收集結果的矢量22移位到一個元素上,在矢量22開始處空出一個元素。在操作結 束時,在現(xiàn)在空的新位置處放置新計算值,由圖4可知。典型地,該傳送帶或結果矢量M包 括正常(normal)矢量長度,例如當每個矢量長度操作中矢量長度是完全的時,可以轉(zhuǎn)儲所 述傳送帶或結果矢量M。該操作可以僅需要一個時鐘周期,并且吞吐量可以是一個(或有 限的)與矢量長度無關的量。在一個時鐘周期期間,可以執(zhí)行求和、移位和放置結果到相應 字段。此外,對于檢測完全的傳送帶或結果矢量存在不同的可能性。在處理相等長度的 段的情況下,當傳送帶是完全時,這是可預測的。在段的大小變化的情況下,這是不可預測 的??梢蕴峁┮环N機制來檢測傳送帶或結果矢量是完全的,還是包含足夠的數(shù)據(jù)來填充完 整矢量并在這種情況下采取適當行動。例如,可以設置布爾狀態(tài),或?qū)⑹噶孔詣愚D(zhuǎn)儲到存儲器。根據(jù)另一個變體,應理解輸入矢量M和結果矢量22或沈的長度可以不同。在圖5中描述了根據(jù)本申請的方法的第二示例操作。為了將注意力指向根據(jù)本申 請的方法的另一個特征,僅示出了每個結果矢量的一個字段觀或32。除了上述字段觀和32以外,還演示了矢量30。在當前計算中,圖5中演示的思 想支持包括先前矢量的至少部分結果在內(nèi)的操作。更具體地,字段觀包括先前執(zhí)行的操作 的結果,諸如由圖4可知。本操作對矢量30的元素進行相加,并利用部分總和sO來累積結 果,在字段32中結果是值sO’,所述sO被保持在字段觀中。例如,對于覆蓋四個矢量的段,可以使用根據(jù)圖2的操作作為第一操作,然后,可 以將根據(jù)圖5的操作使用三次。備選地,可以將字段觀中的值sO初始化為“中性值”,諸如 在加法操作情況下是零,然后可以將根據(jù)圖5的操作執(zhí)行四次。然而,這要求一次附加的初 始化操作。相似地,可以將根據(jù)圖4的傳送帶方法概括為使其應用于覆蓋多個矢量的段。通 過以矢量大小的步長對于該段進行迭代,該機器處理了包括多個矢量數(shù)據(jù)的單個段。僅在第一步驟中,對結果矢量進行移位來產(chǎn)生新的接收入口,并將新的可用元素設置為初始值, 例如對于加法是零。在后續(xù)步驟中,重新使用該新值作為要執(zhí)行的矢量內(nèi)部操作的額外輸 入。在圖6中示出了這種方法。圖6僅示出了結果矢量34或38 (這指示已經(jīng)執(zhí)行了操作) 以及輸入矢量36。根據(jù)這種方式,可以累積多矢量結果。例如,支持矢量長度四倍大小的段,將執(zhí)行根據(jù)圖4的一個初始操作,同時將矢量 結果移位并空出/初始化一個新位置。之后是對于剩余數(shù)據(jù)的根據(jù)圖6的三個后續(xù)操作, 并包括先前步驟的結果?,F(xiàn)在最終結果acc[7]’可用在結果矢量38中。利用圖4演示的方法還可以用在段的大小小于矢量大小的情況下。在圖7中,根 據(jù)本申請的方法的第四示例操作指示了該情況。由圖7可知,描述了結果矢量40或48。此 外,示出的矢量42劃分為[i]中具有輸入值的第一段44,i = 4,...,7;以及[i]中具有輸 入值的第二段46,i = 0,. . .,3。與圖4中所示方法相比較,主要的區(qū)別在于在這種情況下,結果矢量必須移位和 空出更多的位置,即每個矢量中需要多個段,并據(jù)此對其進行初始化。由于段適合在單個矢 量內(nèi)并由此能夠在單個操作中完整地處理段,因此無需針對多個周期的迭代。根據(jù)本實施 例,通過將結果矢量48移位2,第一段44的總和結果是sl,第二段46的總和結果是sO。圖7演示了在每個矢量有八個元素的機器上,在由四個數(shù)據(jù)值段組成的每個段內(nèi) 的值的求和。每個指令計算兩個新段的總和,并移位到結果矢量48。在四個這種周期之后, 用八個元素的計算值填充結果矢量,在處理下一個八個元素之前,需要轉(zhuǎn)儲或在后續(xù)處理 步驟中使用結果矢量。在通常情況下,從段到段的段大小不同,在段邊界和矢量邊界之間沒有關聯(lián)。圖8 示出了根據(jù)本申請的方法的第五示例操作。該示例操作闡明了先前所述的狀態(tài)。在圖8中 示出了第一狀態(tài)中的結果矢量50、后續(xù)狀態(tài)中的結果矢量51和最終狀態(tài)中的結果矢量62。 此外,提供了兩個輸入矢量52和60。將兩個矢量52和60劃分為三個段M、56和58。第一段M被包括在矢量52中, 并且包括輸入元素A W]. . A [5]。第三段58被包括在矢量60中,并且包括輸入元素B [4].. B[7]。第二段56延伸矢量邊界。更具體地,第二段56被包括在矢量52和60中,并且包括 輸入元素 A[6]、A[7]和 BW]..B[3]。這暗示AW]..A[5]的總和,即結果sO是第一段M的完整總和。在第一單個周期 中可以獲得該結果以及值sl,sl是A[6]..A[7]的總和。然而,該值sl僅是第二段56的一 部分的總和。在第二操作中,將B
..B[3]累積來形成第二段56的最終總和sl’。并行 地,計算B[4]..B[7]的總和s2或第三段58的總和s2。由圖8可知,對結果矢量62進行了 三次移位。根據(jù)本申請的其他變體,應理解在結果矢量或傳送帶中的內(nèi)容不能精確地填充到 完整的矢量大小。因此,為了支持傳送帶的逐矢量轉(zhuǎn)儲,傳送帶必須比完整的矢量大小更長。到目前為止,所有情況描述了后續(xù)輸入矢量包含一個必須要被處理的輸入流的情 況。作為根據(jù)本申請的擴展,支持交織輸入流是可能的。例如,如果多路復用兩個輸入流, 流A可以占用每個矢量的前四個元素,以及流B可以占用每個矢量的后四個元素。流A和 流B都包含段大小,段大小必須覆蓋12個元素。
通過根據(jù)圖9的方法的幫助可以執(zhí)行這種情況。圖9示出了根據(jù)本申請的方法的 第六示例操作。描述了結果矢量64或72和具有兩個段68和70的輸入矢量66。由圖9可 知,將第一段68累積到值acc[6]結果是值acc[6]’,以及將第二段累積到值acc[7]結果是 acc [7],。在流A和流B的情況下,可以結合根據(jù)圖7和圖9的操作。更具體地,首先可以執(zhí) 行根據(jù)圖7的方法,隨后可以執(zhí)行根據(jù)圖9的操作兩次。在每三次操作之后,這將產(chǎn)生用于 輸入流A和B的段總和。每次當根據(jù)圖7的操作開始時,根據(jù)圖9的操作通過將每個段中 前四個元素相加來計算兩個新段總和,通過四個數(shù)字的兩次累積段是完整的。應理解代替移位作為傳送帶的結果矢量,還可以將連續(xù)內(nèi)部操作的結果放置在結 果矢量的不同位置。例如,開始于位置零,然后是位置1等,以獲得與使用傳送帶相同順序 的結果。注意本申請保護的范圍不局限于在此所述的實施例。也不局限于由權利要求書中 的附圖標記限制的本申請的保護范圍。術語“包括”不排除所述權利要求書以外的其他部 件。組件之前的術語“一(一個)”不排除多個組件??梢园凑諏S糜布问揭部梢园凑站?程通用處理器來實現(xiàn)形成本申請部件的手段。本申請意欲包括每個新特征或特征的結合。
權利要求
1.一種在矢量處理器中處理數(shù)據(jù)的方法,包括-針對矢量(24,30,36,42,52,60,66)的段(44,46,54,56,58,68,70)執(zhí)行分段操作以 便產(chǎn)生結果;-收集分段操作的結果;以及-在結果矢量(22,26,34,38,40,48,5,51,62,64,72)中傳遞所述結果,使得后續(xù)操作 保持矢量模式的處理。
2.根據(jù)權利要求1所述的方法,還包括收集分段操作的結果,以便以每操作一個矢量 的速率來執(zhí)行處理。
3.根據(jù)權利要求1所述的方法,其中,將結果作為相鄰元素在結果矢量(22,26,34,38, 40,48,5,51,62,64,72)中傳遞。
4.根據(jù)權利要求1所述的方法,其中,在每個操作中產(chǎn)生單個結果。
5.根據(jù)權利要求1的方法,還包括在檢測到完全結果矢量之后使用結果矢量(22,26, 34,38,40,48,5,51,62,64,72)用于進一步的處理。
6.根據(jù)權利要求1所述的方法,其中,分段操作是矢量內(nèi)部操作。
7.根據(jù)權利要求1所述的方法,其中,分段操作至少是以下操作之一A)加法操作;B)極值操作;C)XOR操作;D)0R操作;E)AND操作。
8.根據(jù)權利要求1所述的方法,其中,段(44,46,54,56,58,68,70)的大小是任意的。
9.根據(jù)權利要求1所述的方法,還包括在可編程核上實現(xiàn)分段操作。
10.根據(jù)權利要求5所述的方法,其中,至少通過以下之一來實現(xiàn)可編程核上的分段操作A)專用的操作碼;B)額外的自變量;C)內(nèi)部狀態(tài)機。
11.一種用于執(zhí)行根據(jù)權利要求1所述的方法的矢量處理器。
12.一種包括根據(jù)權利要求11所述的矢量處理器的蜂窩通信設備。
全文摘要
本申請涉及一種在矢量處理器中處理數(shù)據(jù)的方法。本申請還涉及一種用于執(zhí)行所述方法的矢量處理器以及一種包括所述矢量處理器的蜂窩通信設備。所述在矢量處理器中處理數(shù)據(jù)的方法包括針對矢量的段執(zhí)行分段操作以便產(chǎn)生結果;收集分段操作的結果;以及在結果矢量中傳遞結果,以便后續(xù)操作保持矢量模式的處理。
文檔編號G06F9/305GK102047219SQ200980119748
公開日2011年5月4日 申請日期2009年5月29日 優(yōu)先權日2008年5月30日
發(fā)明者威廉·埃格伯特·亨德里克·克洛斯特奎斯, 讓-保羅·查爾斯·弗朗索瓦絲·胡伯特·斯梅茨, 馬西馬·斯姆瑞蒂 申請人:Nxp股份有限公司