用于執(zhí)行分段操作的數(shù)據(jù)處理設(shè)備和方法
【專利摘要】用于執(zhí)行分段操作的數(shù)據(jù)處理設(shè)備和方法被提供。該數(shù)據(jù)處理設(shè)備包括用于儲(chǔ)存矢量操作數(shù)的矢量寄存器存儲(chǔ)器、提供N條并行處理通道并被設(shè)置為對由指定矢量操作數(shù)提供的多達(dá)N個(gè)數(shù)據(jù)元素執(zhí)行分段操作的矢量處理電路,每個(gè)數(shù)據(jù)元素被分配給N條通道中的一條。所述多達(dá)N個(gè)數(shù)據(jù)元素構(gòu)成多個(gè)段,且分段操作的實(shí)行包括對每段的數(shù)據(jù)元素執(zhí)行獨(dú)立操作,所述獨(dú)立操作涉及包含相關(guān)段的數(shù)據(jù)元素的通道之間的相互作用。斷言生成電路響應(yīng)于指定包括多個(gè)段描述符的輸入矢量操作數(shù)的計(jì)算描述符指令,以生成每通道斷言信息,該每通道斷言信息在當(dāng)分段操作被執(zhí)行時(shí)被矢量處理電路用以維持多個(gè)段中各段之間的邊界。由此,包含來自不同段的數(shù)據(jù)元素的通道之間的相互作用被防止。這使得在矢量處理電路內(nèi)對并行處理通道的非常有效的利用得以實(shí)現(xiàn)。
【專利說明】
用于執(zhí)行分段操作的數(shù)據(jù)處理設(shè)備和方法
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及一種用于執(zhí)行分段操作的數(shù)據(jù)處理設(shè)備和方法。【背景技術(shù)】
[0002]提高數(shù)據(jù)處理設(shè)備的性能的一種已知技術(shù)是提供支持矢量操作的運(yùn)行的電路。矢量操作針對至少一個(gè)矢量操作數(shù)(operand)執(zhí)行,其中每一個(gè)矢量操作數(shù)包括多個(gè)數(shù)據(jù)元素。矢量操作的實(shí)行涉及重復(fù)地跨越矢量操作數(shù)內(nèi)的多個(gè)數(shù)據(jù)元素施加運(yùn)算。
[0003]在典型的支持矢量操作的實(shí)行的數(shù)據(jù)處理系統(tǒng)中,矢量寄存器文件將被提供用于儲(chǔ)存矢量操作數(shù)。因此,通過示例的方式,在矢量寄存器文件內(nèi)的每個(gè)矢量寄存器可儲(chǔ)存包括多個(gè)數(shù)據(jù)元素的矢量操作數(shù)。
[0004]已知在某些實(shí)施方案中,還提供了一種矢量處理電路(通常被稱為snro(單指令多數(shù)據(jù))處理電路),這種矢量處理電路提供了多條并行處理通道,以便對矢量操作數(shù)內(nèi)的多個(gè)數(shù)據(jù)元素執(zhí)行并行操作。
[0005]當(dāng)與等效系列的標(biāo)量操作的性能相比時(shí),通過矢量操作的使用可實(shí)現(xiàn)顯著的性能優(yōu)勢。
[0006]對于某些操作類型,這些操作類型可被矢量化使其在矢量處理電路的多條通道內(nèi)能被并行運(yùn)行,但很難實(shí)現(xiàn)矢量處理電路的有效利用。例如,常常存在有在循環(huán)的每次迭代中執(zhí)行的操作,但是在每次迭代內(nèi)要被這些操作處理的數(shù)據(jù)元素的數(shù)目會(huì)改變,使得在每次迭代中要處理的數(shù)據(jù)元素的數(shù)目缺乏規(guī)律性。雖然針對每一次迭代多個(gè)數(shù)據(jù)元素能夠在矢量處理電路的各自的通道內(nèi)被處理,但是矢量處理電路的可用通道不總是能得到很好的利用。例如,如果矢量處理電路具有N條并行處理通道,則可能經(jīng)常出現(xiàn)這樣的情況,即在若干迭代中少于N個(gè)數(shù)據(jù)元素被處理,致使矢量處理電路的低效利用。此外,由于針對每次迭代的數(shù)據(jù)元素的不規(guī)律的特性,更有效地使用現(xiàn)有的矢量處理電路已被認(rèn)為是不切實(shí)際的,因?yàn)椴磺宄τ谌我馓囟ǖ牡鷾?zhǔn)確需要多少條通道。
[0007]需要處理這種無規(guī)律數(shù)目的數(shù)據(jù)元素的算法的一個(gè)示例是稀疏矩陣相乘算法,其中第一數(shù)據(jù)元素的稀疏矩陣與第二數(shù)據(jù)元素的矢量相乘,以便得到針對稀疏矩陣的每一行的若干相乘結(jié)果。接著,每行內(nèi)的相乘結(jié)果被累加,以產(chǎn)生針對每一行的結(jié)果。然而,針對每一行所產(chǎn)生的相乘結(jié)果的數(shù)目取決于在稀疏矩陣的每一行中的非零的數(shù)據(jù)元素的數(shù)目,并且因此,相乘結(jié)果的數(shù)目可在多行之間相當(dāng)顯著地改變。雖然針對任意特定的行將相乘結(jié)果累加所需的累加運(yùn)算適宜通過使用矢量處理電路的通道來執(zhí)行,但是針對任意特定的迭代所需的通道數(shù)目會(huì)改變,這將會(huì)導(dǎo)致矢量處理電路顯著的未充分利用,這樣當(dāng)執(zhí)行那些操作時(shí)矢量處理電路的性能和能量消耗都將會(huì)受到影響。
[0008]最近嘗試在解決諸如稀疏矩陣矢量相乘等不規(guī)則性問題時(shí)的焦點(diǎn)集中在使用面向吞吐量處理器或圖形處理單元(GPUs)上。雖然GPU擅長通過內(nèi)存訪問進(jìn)行重疊計(jì)算,并且從而隱藏延遲,但是當(dāng)數(shù)據(jù)結(jié)構(gòu)的不規(guī)則性表現(xiàn)為計(jì)算負(fù)荷失衡時(shí),GPU就會(huì)面臨困難。其結(jié)果是,例如,僅當(dāng)特殊的數(shù)據(jù)格式被使用或者建模的底層物理問題產(chǎn)生結(jié)構(gòu)良好的稀疏矩陣時(shí),才會(huì)成功。
[0009]以下是描述用于處理不規(guī)則數(shù)據(jù)結(jié)構(gòu)的技術(shù)的各種文獻(xiàn)的實(shí)例:
[0010]1 ? Shubhabrata Sengupta,針對多核心架構(gòu)的有效基元和算法,博士論文,2010。
[0011]2.G.E? Blelloch,J.C.Hardwick,J.Sipelstein,M.Zagha,S.Chatter jee,便攜嵌套式數(shù)據(jù)并行語言的實(shí)現(xiàn),并行與分布式計(jì)算雜志,21卷,1期,1994年4月。
[0012]3.B.Ren,G.Agrawal,J.R.Larus,T.Mytkowicz,T.Poutanen,W.Schulte,遍歷不規(guī)則數(shù)據(jù)結(jié)構(gòu)的應(yīng)用的SIMD并行化,2013。
[0013]4.M.Billeter,0.0188〇11,1].六88&18 8〇11,2009高性能圖形會(huì)議的會(huì)議記錄,寬31]\? 多核心架構(gòu)上的高效流壓縮。[〇〇14]所期望的是提供一種用于提高矢量處理電路的利用率的機(jī)制,該機(jī)制在處理諸如之前描述的不規(guī)則數(shù)據(jù)結(jié)構(gòu)等各種數(shù)據(jù)組時(shí)能使得并行處理通道更好地被利用。
【發(fā)明內(nèi)容】
[0015]從第一個(gè)方面看,本發(fā)明提供了一種數(shù)據(jù)處理設(shè)備,該數(shù)據(jù)處理設(shè)備包括:矢量寄存器存儲(chǔ)器,該矢量寄存器存儲(chǔ)器被配置為儲(chǔ)存矢量操作數(shù);矢量處理電路,該矢量處理電路提供N條并行處理通道,并且被配置為對由指定矢量操作數(shù)提供的多達(dá)N個(gè)數(shù)據(jù)元素執(zhí)行分段操作,每個(gè)數(shù)據(jù)元素被分配給所述N條通道中的一條,所述多達(dá)N個(gè)數(shù)據(jù)元素構(gòu)成多個(gè)段,且所述分段操作的實(shí)行包括對每段的數(shù)據(jù)元素執(zhí)行獨(dú)立操作,所述獨(dú)立操作涉及包含相關(guān)段的數(shù)據(jù)元素的通道之間的相互作用;以及斷言生成電路,該斷言生成電路被配置為響應(yīng)于指定包括多個(gè)段描述符的輸入矢量操作數(shù)的計(jì)算描述符指令,生成每通道斷言信息,每通道斷言信息在當(dāng)分段操作被執(zhí)行時(shí)被矢量處理電路用以維持多個(gè)段的各段之間的邊界,以便防止包含來自不同段的數(shù)據(jù)元素的通道之間的相互作用。
[0016]根據(jù)本發(fā)明,斷言生成電路響應(yīng)于計(jì)算描述符指令,針對包括多個(gè)段描述符的輸入矢量操作數(shù),生成每通道斷言信息。接著,矢量處理電路被設(shè)置為對多達(dá)N個(gè)數(shù)據(jù)元素執(zhí)行分段操作(其中N是并行處理通道的數(shù)目),其中這些數(shù)據(jù)元素構(gòu)成了一個(gè)以上的段。該每通道斷言信息用于維持這些段中各段之間的邊界,使得分段操作的實(shí)行針對每個(gè)段的數(shù)據(jù)元素執(zhí)行獨(dú)立操作,同時(shí)防止包含來自不同段的數(shù)據(jù)元素的通道之間的相互作用。[〇〇17]通常,分段操作會(huì)生成表示將一系列運(yùn)算應(yīng)用于數(shù)據(jù)元素的結(jié)果,例如A、A+B、A+B +C和A+B+C+D(其中A、B、C和D是分配到獨(dú)立通道的數(shù)據(jù)元素)。雖然元素的計(jì)算順序是不相干時(shí)(假設(shè)具有關(guān)聯(lián)性),結(jié)果矢量表示基于輸入元素的順序的數(shù)學(xué)序列。在沒有每通道斷言信息的情況下,數(shù)學(xué)序列則會(huì)跨越整個(gè)多達(dá)N個(gè)數(shù)據(jù)元素的組被應(yīng)用,但是借助每通道斷言信息,相鄰段之間的邊界被維持,使得在每一段內(nèi)生成獨(dú)立數(shù)學(xué)序列。
[0018]在一個(gè)實(shí)施例中,針對每一段執(zhí)行的獨(dú)立操作基本上是相同的操作,該相同的操作借助使用每通道斷言信息所維持的邊界獨(dú)立地在每個(gè)段內(nèi)被執(zhí)行。作為對每段執(zhí)行的獨(dú)立操作的部分所發(fā)生的所述“通道之間的相互作用”通常包括涉及由至少兩條不同的通道提供的元素的二進(jìn)制運(yùn)算。這種運(yùn)算可涉及計(jì)算、數(shù)據(jù)移動(dòng)(例如,最小/最大)或替換(例如,飽和加法/減法)等。每通道斷言信息防止在段邊界處的相鄰?fù)ǖ乐g的相互作用。
[0019]根據(jù)本發(fā)明的技術(shù),沒有必要經(jīng)由一次或多次貫穿矢量處理電路的迭代對每段進(jìn)行單獨(dú)處理,取而代之的是通過允許單次貫穿矢量處理電路的迭代對來自多個(gè)段的數(shù)據(jù)元素進(jìn)行運(yùn)算能實(shí)現(xiàn)對N條并行處理通道更有效地利用。這是可行的,是因?yàn)橛?jì)算描述符指令的運(yùn)行產(chǎn)生每通道斷言信息,該每通道斷言信息使得多個(gè)段之間的邊界被維持。
[0020]這種方法當(dāng)執(zhí)行多種不同的操作時(shí)既可以提升性能也可以節(jié)省能量消耗。該方法特別適合使矢量處理電路在處理包括多個(gè)段(每個(gè)段中的數(shù)據(jù)元素的數(shù)目是不規(guī)則的)的數(shù)據(jù)結(jié)構(gòu)時(shí)被更有效地利用。
[0021]在一個(gè)實(shí)施例中,矢量處理電路包括多個(gè)流水線級,并且被配置為采用每通道斷言信息來控制在多個(gè)流水線級中的每個(gè)流水線級執(zhí)行的計(jì)算,以便維持多個(gè)段中各段之間的邊界。因此,在這樣的實(shí)施例中,每通道斷言信息被用于管理在每一個(gè)流水線級中執(zhí)行的計(jì)算,以便防止包含來自不同段的數(shù)據(jù)元素的通道之間的任何相互作用。
[0022]在一個(gè)實(shí)施例中,在每個(gè)流水線級處,矢量處理電路被配置為依據(jù)每通道斷言信息選擇性地禁用一個(gè)或多個(gè)計(jì)算,以便防止包含來自不同段的數(shù)據(jù)元素的通道之間的相互作用。因此,在一個(gè)實(shí)施例中,矢量處理電路可包括電路元件,這些電路元件使矢量處理電路能夠跨越分配給N條并行處理通道的N個(gè)數(shù)據(jù)元素執(zhí)行非分段版本的操作,但通過使用每通道斷言信息,在非分段版本的操作中要執(zhí)行的一個(gè)或多個(gè)計(jì)算被禁用以使得以對每個(gè)段內(nèi)的數(shù)據(jù)元素以分段方式來執(zhí)行操作。
[0023]每通道斷言信息被矢量處理電路使用的方式可依據(jù)實(shí)施例的不同而變化。然而, 在一個(gè)實(shí)施例中,針對一個(gè)或多個(gè)流水線級中的每一個(gè),該矢量處理電路被配置為對每通道斷言信息執(zhí)行邏輯操作,以便產(chǎn)生用以確定哪些計(jì)算在這個(gè)流水線級處是要被禁用的控制數(shù)據(jù)。在一個(gè)具體實(shí)施例中,由斷言生成電路生成的每通道斷言信息“按原樣”被用于第一次迭代中,但對于后續(xù)迭代,每通道斷言信息與該每通道斷言信息的經(jīng)位移的版本進(jìn)行邏輯或運(yùn)算,以便產(chǎn)生針對此類后續(xù)迭代所需要的控制數(shù)據(jù)。
[0024]每通道斷言信息可采用多種形式。在一個(gè)實(shí)施例中,每通道斷言信息包括針對每條通道的二進(jìn)制值。在一個(gè)具體布置中,二進(jìn)制值被設(shè)定為用以標(biāo)識每條分配有段的末位數(shù)據(jù)元素的通道的第一值,以及被設(shè)定為用于所有其他通道的第二值。因此,通過舉例的方式,第一值可以是邏輯值1,并且第二值可以是邏輯值〇,這樣在每通道斷言信息內(nèi)邏輯值1 的每次出現(xiàn)識別出所分配的數(shù)據(jù)元素標(biāo)記段的結(jié)尾的通道。因此,第一值被有效地用作標(biāo)識N條并行處理通道內(nèi)每個(gè)段的結(jié)尾的指針。
[0025]然而,每通道斷言信息不必須以這種方式被指定。例如,在一個(gè)替選的實(shí)施例中, 二進(jìn)制值被設(shè)定為用以標(biāo)識包含一個(gè)段的數(shù)據(jù)元素的通道的第一值,以及被設(shè)定為用以標(biāo)識包含相鄰段的數(shù)據(jù)元素的通道的第二值。因此,每通道斷言信息在一系列第一值和一系列第二值之間交替以識別在N條并行處理通道內(nèi)的每個(gè)段。如果多于兩個(gè)段被識別出,則每個(gè)相鄰段將在二進(jìn)制值中被標(biāo)記過渡(transit1n)。對于每個(gè)段,在相同值處的二進(jìn)制值的數(shù)目標(biāo)識在該段中數(shù)據(jù)元素的總數(shù)目。
[0026]在一個(gè)實(shí)施例中,段被定義為不具有數(shù)據(jù)元素是可行的。在一個(gè)實(shí)施例中,這樣的段不能有效地通過每通道斷言信息被識別。相反,在一個(gè)實(shí)施例中,斷言生成電路還被配置為在多個(gè)段描述符指示存在至少一個(gè)不具有數(shù)據(jù)元素的段的情況下設(shè)定控制字段。存在若干控制字段可被設(shè)定的方式。例如,標(biāo)志可被設(shè)定來標(biāo)識至少一個(gè)不具有數(shù)據(jù)元素的段的存在,或者是一定的值可以儲(chǔ)存在中央處理器(CPU)通用寄存器中。
[0027]矢量處理電路接著如何響應(yīng)設(shè)定的控制字段可依據(jù)實(shí)施例的不同而變化。事實(shí)上,在某些實(shí)施例中,矢量處理電路不必響應(yīng)于設(shè)定的控制字段采取任何動(dòng)作。然而,在一個(gè)實(shí)施例中,矢量處理電路響應(yīng)于被設(shè)定的控制字段以執(zhí)行與分段操作相關(guān)聯(lián)的額外處理步驟。
[0028]在一個(gè)具體實(shí)施例中,額外處理步驟包括:從多個(gè)段描述符中識別每個(gè)不具有數(shù)據(jù)元素的段的位置,并且在由分段操作生成的結(jié)果數(shù)據(jù)內(nèi)的那個(gè)位置處插入預(yù)定的數(shù)據(jù)值。
[0029]在控制字段由標(biāo)志來實(shí)現(xiàn)的實(shí)施例中,標(biāo)志可以是完全用于指示至少一個(gè)不具有數(shù)據(jù)元素的段的存在的目的所提供的專用標(biāo)志??蛇x地,可使用預(yù)先存在的標(biāo)志,例如進(jìn)位標(biāo)志,而無需提供單獨(dú)的專用標(biāo)志。此外,額外標(biāo)志可被用來攜帶邊帶信息,例如零長度段的位置。
[0030]在一個(gè)實(shí)施例中分段操作只可將指定矢量操作數(shù)的數(shù)據(jù)元素當(dāng)作輸入數(shù)據(jù),但是在另一替選的實(shí)施例中分段操作還可指定標(biāo)量進(jìn)位輸入(carry-1n)值,并且分段操作的實(shí)行產(chǎn)生結(jié)果數(shù)據(jù)元素的矢量與標(biāo)量進(jìn)位輸出(carry-out)值。因此,標(biāo)量進(jìn)位輸入值將被并入到在矢量處理電路內(nèi)對由指定矢量操作數(shù)提供的數(shù)據(jù)元素執(zhí)行的計(jì)算中,例如在分段操作實(shí)行期間中合適的時(shí)間點(diǎn)處,將標(biāo)量進(jìn)位輸入值傳播至每個(gè)與第一段相關(guān)聯(lián)的通道。除了產(chǎn)生結(jié)果數(shù)據(jù)元素的矢量以外,也將產(chǎn)生標(biāo)量進(jìn)位輸出值。在某些情況下,標(biāo)量輸出值可被設(shè)定為中立值(neutral value),該中立值被用于標(biāo)識不存在進(jìn)位輸出值。
[0031]然而,在替選的實(shí)施例中,進(jìn)位輸出值可以用作針對處理的另一次迭代的進(jìn)位輸入值。具體地,在一個(gè)實(shí)施例中,矢量處理電路響應(yīng)于分段指令以執(zhí)行分段操作,并且數(shù)據(jù)處理設(shè)備被配置為運(yùn)行計(jì)算描述符指令和分段指令的多次迭代來對包括多于N個(gè)數(shù)據(jù)元素的數(shù)據(jù)元素組執(zhí)行分段操作,由針對一次迭代的分段操作的實(shí)行產(chǎn)生的標(biāo)量進(jìn)位輸出值被作為用于在下次迭代中的分段操作的實(shí)行的標(biāo)量進(jìn)位輸入值。由此,在所有所需迭代的實(shí)行的期間,這使得在對大量數(shù)據(jù)集進(jìn)行操作的同時(shí)對矢量處理電路資源更有效地進(jìn)行利用。如果段跨越(span)多于一次迭代,則在一次迭代結(jié)束時(shí)產(chǎn)生的標(biāo)量進(jìn)位輸出值可被用作針對下一次迭代的標(biāo)量進(jìn)位輸入值,以便允許適當(dāng)?shù)闹祩鞑サ较乱淮蔚幸允鼓軐υ摱蔚母鲾?shù)據(jù)元素的連續(xù)運(yùn)算實(shí)行成為可能。
[0032]在這樣的設(shè)置中,即使每個(gè)段中的數(shù)據(jù)元素的數(shù)目是不規(guī)律,也能實(shí)現(xiàn)矢量處理電路的有效利用。
[0033]在一個(gè)實(shí)施例中,段標(biāo)識與嵌套循環(huán)內(nèi)的預(yù)定循環(huán)的每次迭代相關(guān)聯(lián)的數(shù)據(jù)元素。預(yù)定循環(huán)可例如是嵌套循環(huán)的內(nèi)循環(huán)。
[0034]在一個(gè)實(shí)施例中,矢量處理電路被配置為執(zhí)行稀疏矩陣乘法操作,其中第一數(shù)據(jù)元素的稀疏矩陣與第二矢量元素的矢量相乘以產(chǎn)生針對稀疏矩陣的每一行的若干相乘結(jié)果,這些相乘結(jié)果構(gòu)成要執(zhí)行分段操作的數(shù)據(jù)元素組,其中每一段包括針對稀疏矩陣的其中一行的相乘結(jié)果。這表示一種特定示例情形,其中在每一段中提供的數(shù)據(jù)元素的數(shù)目可能是不規(guī)則的。
[0035]分段操作可采用各種形式,但在一個(gè)實(shí)施例中對每一段內(nèi)的相乘結(jié)果執(zhí)行累加運(yùn)算。
[0036]被提供來作為至計(jì)算描述符指令的輸入的段描述符可以采用各種形式。在一個(gè)實(shí)施例中,段描述符提供指向每一段的結(jié)尾和每一段的開始中的一者的指針,而在一個(gè)替選的實(shí)施例中段描述符標(biāo)識每一段的長度。當(dāng)段描述符標(biāo)識每一段的長度時(shí),則當(dāng)前段的結(jié)尾可以基于相對于在前段的偏移而被被計(jì)算出。
[0037]段描述符可由任何合適的數(shù)據(jù)類型提供。在一個(gè)實(shí)施例中,段描述符包括帶符號的整數(shù),在一個(gè)具體實(shí)施例中每個(gè)段描述符由32位帶符號整數(shù)表示。
[0038]在一個(gè)實(shí)施例中,其中這種的帶符號的整數(shù)被用作段描述符,接著在計(jì)算描述符指令和分段指令的每次迭代中,輸入矢量操作數(shù)被更新以移除在前一次迭代期間用于生成針對前一次迭代的每通道斷言信息所使用的任何段描述符。這確保使用過的段描述符被丟棄,并且在后一次迭代期間不再被考慮。
[0039]在一個(gè)實(shí)施例中,斷言生成電路被配置為,在生成針對當(dāng)前迭代的每通道斷言信息之前,從為當(dāng)前迭代所提供的多個(gè)段描述符中減去等于由所有先前迭代處理的數(shù)據(jù)元素的總數(shù)的值。在一個(gè)具體實(shí)施例中,N個(gè)數(shù)據(jù)元素將在每次迭代中被處理,而不是在最終迭代中,并且相應(yīng)地從多個(gè)段描述符中減去N的倍數(shù),以生成經(jīng)修改的段描述符,該經(jīng)修改的段描述符接著被用于生成每通道斷言信息。這使得段描述符被映射到針對當(dāng)前迭代的相關(guān)并行處理通道,以便識別出現(xiàn)在該當(dāng)前迭代中的任何段邊界。
[0040]分段操作可采用各種形式,但是在一個(gè)實(shí)施例中可以是分段掃描操作和分段減少操作中的一者。按照掃描操作,所識別的二進(jìn)制運(yùn)算被反復(fù)施加到數(shù)量不斷增加的數(shù)據(jù)元素。二進(jìn)制運(yùn)算可米用各種形式,例如加法運(yùn)算、乘法運(yùn)算、最小值檢測運(yùn)算、最大值檢測運(yùn)算等。掃描操作的實(shí)行結(jié)果是,生成包含結(jié)果序列的矢量,每個(gè)結(jié)果涉及對不同數(shù)目的數(shù)據(jù)元素施加二進(jìn)制運(yùn)算。作為一個(gè)具體示例,掃描操作可以指定加法運(yùn)算作為二進(jìn)制運(yùn)算,這種掃描加法運(yùn)算有時(shí)被稱為前綴求和運(yùn)算。
[0041]減少操作與掃描操作類似,但是只有最終掃描結(jié)果被保留作為輸出(并且相應(yīng)地, 中間掃描結(jié)果不需要被保留,并且在某些實(shí)施例中不需進(jìn)行計(jì)算)。
[0042]存在有若干由斷言生成電路生成的每通道斷言信息可被保留以供隨后被矢量處理電路在分段操作執(zhí)行期間使用的方式。在一個(gè)實(shí)施例中,專用寄存器可被提供用于儲(chǔ)存每通道斷言信息。然而,在一個(gè)替選的實(shí)施例中,該設(shè)備還包括提供多個(gè)斷言寄存器的斷言寄存器文件,并且計(jì)算描述符指令被配置為指定斷言寄存器中的一個(gè),每條通道斷言信息將被存儲(chǔ)到這個(gè)寄存器中。因此,所使用的特定斷言寄存器可直接在計(jì)算描述符指令中被識別出。
[0043]從第二個(gè)方面看,本發(fā)明提供了一種在具有配置為儲(chǔ)存矢量操作數(shù)的矢量寄存器存儲(chǔ)器和提供N條并行處理通道的矢量處理電路的數(shù)據(jù)處理設(shè)備內(nèi)執(zhí)行分段操作的方法, 所述方法包括:在矢量處理電路內(nèi)對由指定的矢量操作數(shù)提供的多達(dá)N個(gè)數(shù)據(jù)元素執(zhí)行分段操作,每個(gè)數(shù)據(jù)元素被分配給N條通道中的一條。多達(dá)N個(gè)數(shù)據(jù)元素構(gòu)成多個(gè)段,且分段操作的實(shí)行包括對每段的數(shù)據(jù)元素執(zhí)行獨(dú)立操作,獨(dú)立操作涉及包含相關(guān)段的數(shù)據(jù)元素的通道之間的相互作用;以及響應(yīng)于指定包括多個(gè)段描述符的輸入矢量操作數(shù)的計(jì)算描述符指令,生成每通道斷言信息,每通道斷言信息在當(dāng)分段操作被執(zhí)行時(shí)被所述矢量處理電路用以維持多個(gè)段的各段之間的邊界,以便防止包含來自不同段的數(shù)據(jù)元素的通道之間的相互作用。[〇〇44]從第三個(gè)方面看,本發(fā)明提供了一種數(shù)據(jù)處理設(shè)備,包括:矢量寄存器存儲(chǔ)裝置, 該矢量寄存器存儲(chǔ)裝置用于儲(chǔ)存矢量操作數(shù);矢量處理裝置,該矢量處理裝置用于提供N條并行處理通道,并且用于對由指定矢量操作數(shù)提供的多達(dá)N個(gè)數(shù)據(jù)元素執(zhí)行分段操作,每個(gè)數(shù)據(jù)元素被分配給N條通道中的一條,所述多達(dá)N個(gè)數(shù)據(jù)元素構(gòu)成多個(gè)段,且分段操作的實(shí)行包括對每段的數(shù)據(jù)元素執(zhí)行獨(dú)立操作,所述獨(dú)立操作涉及包含相關(guān)段的數(shù)據(jù)元素的通道之間的相互作用;以及斷言生成裝置,該斷言生成裝置用于響應(yīng)于指定包括多個(gè)段描述符的輸入矢量操作數(shù)的計(jì)算描述符指令來生成每通道斷言信息,該每通道斷言信息在當(dāng)分段操作被執(zhí)行時(shí)被所述矢量處理電路用以維持多個(gè)段的各段之間的邊界,以便防止包含來自不同段的數(shù)據(jù)元素的通道之間的相互作用。
[0045]從第四個(gè)方面看,本發(fā)明提供了一種計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品以非暫態(tài)形式儲(chǔ)存計(jì)算機(jī)程序,計(jì)算機(jī)程序用于控制計(jì)算機(jī)來提供針對程序指令的虛擬機(jī)運(yùn)行環(huán)境,計(jì)算機(jī)程序指令對應(yīng)于與本發(fā)明第一個(gè)方面一致的數(shù)據(jù)處理設(shè)備?!靖綀D說明】
[0046]本發(fā)明還將,僅通過示例的方式,參考其在附圖中示出的實(shí)施例被描述,其中:
[0047]圖1根據(jù)一個(gè)實(shí)施例示意性地示出了每通道斷言信息是如何通過運(yùn)行指示輸入矢量操作數(shù)的計(jì)算描述符指令被生成的;
[0048]圖2根據(jù)一個(gè)實(shí)施例示意性地示出了每通道斷言信息是如何被用于執(zhí)行分段掃描操作的;
[0049]圖3是根據(jù)一個(gè)實(shí)施例的數(shù)據(jù)處理設(shè)備的一個(gè)框圖;
[0050]圖4A是根據(jù)一個(gè)實(shí)施例示出了一組數(shù)據(jù)元素是如何通過使用圖3的裝置進(jìn)行分段操作的流程圖;
[0051]圖4B根據(jù)一個(gè)實(shí)施例更詳細(xì)地示出了圖4A的可選標(biāo)志評估步驟;[〇〇52]圖5A根據(jù)一個(gè)實(shí)施例示出了計(jì)算描述符單元150內(nèi)提供的以便生成每通道斷言信息的組件。[〇〇53]圖5B根據(jù)一個(gè)實(shí)施例示出了計(jì)算描述符單元150內(nèi)提供的以便生成可選的標(biāo)志的組件;
[0054]圖6根據(jù)一個(gè)實(shí)施例示意性地示出了稀疏矩陣乘法是如何通過使用圖3的裝置被執(zhí)行的;
[0055]圖7根據(jù)一個(gè)實(shí)施例示意性地示出了一組經(jīng)封裝的描述符是如何在多次迭代期間被使用以生成針對每次這些迭代的每通道斷言信息及標(biāo)志;
[0056]圖8根據(jù)一個(gè)實(shí)施例示出了每通道斷言信息可如何被使用以執(zhí)行分段減少操作; [〇〇57]圖9根據(jù)一個(gè)實(shí)施例示意性地示出了計(jì)算描述符指令內(nèi)提供的字段;[〇〇58]圖10根據(jù)一個(gè)實(shí)施例示意性地示出了分段減少指令內(nèi)提供的字段;[〇〇59]圖11根據(jù)一個(gè)實(shí)施例示意性地示出了數(shù)據(jù)處理設(shè)備的虛擬機(jī)實(shí)現(xiàn)方式。【具體實(shí)施方式】
[0060]圖1根據(jù)一個(gè)實(shí)施例示意性地示出了計(jì)算描述符操作的實(shí)行。具體地,在一個(gè)實(shí)施例中,數(shù)據(jù)處理設(shè)備內(nèi)的斷言生成電路被配置為響應(yīng)于指定包括多個(gè)段描述符的輸入矢量操作數(shù)10的計(jì)算描述符指令,以便生成每通道斷言信息15,該每通道斷言信息15接著被數(shù)據(jù)處理設(shè)備的矢量處理電路使用以執(zhí)行分段操作。在一個(gè)實(shí)施例中,如圖1所示,輸入矢量寄存器10包含一系列無符號數(shù)據(jù)值。在一個(gè)具體的實(shí)施例中,輸入矢量寄存器10包含一系列8個(gè)32位無符號值。在該實(shí)施例中的每個(gè)無符號值表示段的結(jié)尾。
[0061]在該示例中,假設(shè)矢量處理電路提供8條并行處理通道,并且由此可在任意特定迭代中對多達(dá)8個(gè)數(shù)據(jù)元素的序列執(zhí)行分段操作。通常,分段操作將響應(yīng)于指定數(shù)據(jù)元素的特定輸入矢量操作數(shù)的分段指令被執(zhí)行,其中每個(gè)數(shù)據(jù)元素被分配給矢量處理電路內(nèi)的N條并行處理通道中的一條。
[0062]返回針對計(jì)算描述符指令的輸入矢量操作數(shù)的討論中,該輸入矢量操作數(shù)指定一系列32位無符號值,并且第一無符號值11的值為1,該值指示第一段結(jié)束在數(shù)據(jù)元素位置1 處,由此使得每通道斷言信息15(在此也稱作為掩碼)的第二位16被設(shè)定等于1。類似地,輸入操作數(shù)10中的第二32位無符號值12的值為6,該值指示下一段結(jié)束在數(shù)據(jù)元素位置6處, 相應(yīng)地使得掩碼15內(nèi)的位17被設(shè)定等于1。然而,下一個(gè)無符號值13的值大于8(在此情況下值為9),并且因此超出了矢量處理電路在單次迭代中可處理的數(shù)據(jù)元素的數(shù)目的范圍。相應(yīng)地,在輸入操作數(shù)10中的第三和較高的無符號值在當(dāng)前迭代中被忽略。在掩碼內(nèi),任何未借助輸入操作數(shù)10的內(nèi)容被設(shè)定等于邏輯值1的比特位置的值被設(shè)定等于〇,如圖1中所示。 此外,在輸入操作數(shù)10內(nèi)的無符號值可使用在后續(xù)迭代中,例如將參考圖7更詳細(xì)地被討論。[〇〇63]除了掩碼15,在一個(gè)實(shí)施例中計(jì)算描述符指令的運(yùn)行也將操縱標(biāo)志20的值。標(biāo)志的狀態(tài)指示操作數(shù)寄存器10內(nèi)兩個(gè)連續(xù)的無符號值是否具有相同的值,這指示不具有數(shù)據(jù)元素的段的存在。在一個(gè)實(shí)施例中,如果操作數(shù)寄存器10內(nèi)兩個(gè)連續(xù)元素是相等的,標(biāo)志則被設(shè)定為邏輯值1,否則被清除為邏輯值0。因此,在圖1的示例中,標(biāo)志20將被清除為邏輯值 0。雖然在某些實(shí)施例中算法/編程器可決定忽略該標(biāo)志,但是在一個(gè)實(shí)施例中該標(biāo)志被用于標(biāo)識需要單獨(dú)對待的輸入矢量,例如之后將參考圖4B被討論的。[〇〇64]圖2根據(jù)一個(gè)實(shí)施例示意性地示出了矢量處理電路內(nèi)通過使用在圖1中生成的掩碼15的分段掃描操作的實(shí)行。在該示例中,掃描操作指定加法運(yùn)算作為其二進(jìn)制運(yùn)算??紤]值x〇、x1、x2.的輸入序列,施加掃描加法將產(chǎn)生結(jié)果序列yo、y1、y2.,其中:
[0065]y〇 = xo;
[0066]yi = xo+xi ;
[0067]y2 = xo+xi+X2;
[0068].[0〇69]在圖2中示出的示例中,輸入源矢量操作數(shù)25包含8個(gè)數(shù)據(jù)元素vo至V7。在沒有任何分段情況下,將被理解的是,對那些8個(gè)元素實(shí)行的掃描加法運(yùn)算將使得跨越矢量處理電路的8條并行處理通道的每一條重復(fù)地施加加法運(yùn)算,其中加法運(yùn)算針對在每條通道內(nèi)數(shù)目不斷增加的數(shù)據(jù)元素被執(zhí)行,這樣對于包含輸入數(shù)據(jù)元素V7的最終通道,產(chǎn)生的結(jié)果將表示所有8個(gè)數(shù)據(jù)元素VQ至V7的相加。
[0070]然而,根據(jù)所描述的實(shí)施例,矢量處理電路的操作由于掩碼15的提供(特別是掩碼中標(biāo)識段的結(jié)尾的每個(gè)邏輯值1)而被修改。因此,第一段包含矢量元素vdPvi,而第二段則包含矢量兀素^、¥3、¥4、¥5和¥6。末位矢量兀素¥7被包含在第三段內(nèi),該第三段不在由輸入矢量操作數(shù)25表示的長度為8的矢量長度內(nèi)終結(jié)。
[0071]如圖2所示,分段掃描操作的實(shí)行發(fā)生在4個(gè)離散部分27、32、42和57中。對于第一部分27,輸入掩碼15被使用來禁用由部分27內(nèi)的2條虛線指示的計(jì)算。因此,剩余的加法運(yùn)算的實(shí)行將輸入矢量25轉(zhuǎn)換成中間形式30。
[0072]對于掃描操作的下一部分32,通過將該掩碼與其一比特位移版本進(jìn)行邏輯或運(yùn)算,經(jīng)修改的掩碼被執(zhí)行,以便產(chǎn)生新掩碼35。接著該新掩碼35禁用由掃描操作的第二部分 32內(nèi)的虛線指示的3個(gè)操作,且剩余的加法運(yùn)算的實(shí)行的結(jié)果是產(chǎn)生中間矢量40。[〇〇73]對于掃描操作的第三部分42,通過將掩碼35與其兩比特位移版本進(jìn)行邏輯或運(yùn)算,又一經(jīng)修改的掩碼45被產(chǎn)生。該掩碼45禁用由第三部分42內(nèi)的虛線指示的三個(gè)計(jì)算,并且結(jié)果是中間矢量50被產(chǎn)生。
[0074]掃描操作的最終部分57涉及將標(biāo)量輸入加到在第一段的每個(gè)通道中的數(shù)據(jù)元素。 在這種情況下,第一段僅包括在通道〇和通道1中的數(shù)據(jù)元素,并且相應(yīng)地,標(biāo)量操作數(shù)55不被傳播至其他任何通道。這樣產(chǎn)生了結(jié)果矢量60。此外,由于通道7包含矢量元素v7 (該矢量元素V7是尚未終結(jié)的第三段的一部分),所以矢量元素被輸出作為進(jìn)位輸出標(biāo)量值65。標(biāo)量進(jìn)位輸出值65可接著被用作該分段掃描的下一次迭代的標(biāo)量進(jìn)位輸入值,并且針對任何這種后續(xù)迭代,基于經(jīng)修改的輸入矢量操作數(shù)(該輸入矢量操作數(shù)排除了已經(jīng)使用的描述符值“1”和“6”)進(jìn)一步執(zhí)行計(jì)算描述符指令,新掩碼被生成。針對該分段掃描過程的后續(xù)迭代,生成掩碼的過程之后將參照圖7進(jìn)行描述。
[0075]圖3示出了根據(jù)一個(gè)實(shí)施例的數(shù)據(jù)處理設(shè)備。要被設(shè)備運(yùn)行的指令被放置在指令隊(duì)列100內(nèi),該要被設(shè)備運(yùn)行的指令從指令隊(duì)列100被傳送至解碼電路105。解碼電路將指令進(jìn)行解碼,以便生成被放置在發(fā)布隊(duì)列110內(nèi)的特定控制信息,這樣的控制信息有時(shí)被稱為微操作(micro-ops)。該發(fā)布隊(duì)列接著會(huì)分派適當(dāng)?shù)目刂菩畔⒌皆撛O(shè)備內(nèi)的相關(guān)處理單元, 以便使得由所接收的指令指定的操作被執(zhí)行。[0〇76] 在所示示例中,多個(gè)矢量處理單元115被提供,這些矢量處理單元包括掃描單元 120、算術(shù)邏輯單元(ALU) 125、乘積累加(MAC)單元130、浮點(diǎn)單元(FPU) 135和計(jì)算描述符單元150。相應(yīng)地,在發(fā)布隊(duì)列110中所標(biāo)識的浮點(diǎn)運(yùn)算將被轉(zhuǎn)發(fā)至FPU 135進(jìn)行處理,乘法和/ 或乘積累加運(yùn)算將被傳送至MAC單元130,并且標(biāo)準(zhǔn)算術(shù)運(yùn)算將被傳送至ALU 125。掃描單元 120本身可由另一算術(shù)邏輯單元構(gòu)成,或者可以是被提供用于執(zhí)行所描述的實(shí)施例的掃描操作的專用單元。在一個(gè)實(shí)施例中,掃描單元120可結(jié)合ALU 125使用,以便執(zhí)行所需的分段掃描操作,其中轉(zhuǎn)發(fā)路徑在掃描單元120和ALU 125之間被使用。因此,例如,ALU可被用于執(zhí)行掃描操作的最終部分57,在該最終部分57中標(biāo)量值被加到在一些通道中的矢量元素(數(shù)目取決于針對正被執(zhí)行的迭代中第一段邊界在并行處理通道內(nèi)何處)。
[0077]計(jì)算描述符單元150被用于運(yùn)行之前所討論的計(jì)算描述符指令,并且在一個(gè)實(shí)施例中被設(shè)置為將結(jié)果掩碼儲(chǔ)存在斷言寄存器文件155內(nèi)的一個(gè)斷言寄存器中。斷言寄存器可以是預(yù)定的,或者替選地,可在計(jì)算描述符指令的字段內(nèi)被標(biāo)識。在計(jì)算描述符指令的運(yùn)行也操縱標(biāo)志的的情況下,計(jì)算描述符單元150將具有寫訪問標(biāo)志160的權(quán)限。當(dāng)執(zhí)行之前所描述的分段掃描操作時(shí),掃描單元120(可選地,連同ALU 125)將具有訪問斷言寄存器文件155和標(biāo)志160的權(quán)限。[〇〇78]矢量處理單元115所需的各種輸入操作數(shù)將從矢量寄存器文件140內(nèi)的寄存器中被讀取。此外,由每個(gè)單元(除了計(jì)算描述符單元,該計(jì)算描述符單元的輸出被儲(chǔ)存在斷言寄存器文件中)生成的結(jié)果操作數(shù)通常會(huì)被儲(chǔ)存回矢量寄存器文件140內(nèi)的目的地寄存器。加載和存儲(chǔ)指令將用于使加載/存儲(chǔ)單元(LSU) 145執(zhí)行相應(yīng)的加載和存儲(chǔ)操作,以便使操作數(shù)數(shù)據(jù)從存儲(chǔ)器加載到矢量寄存器文件140的指定寄存器中,或者針對一個(gè)或多個(gè)矢量寄存器的當(dāng)前內(nèi)容使操作數(shù)數(shù)據(jù)儲(chǔ)存回存儲(chǔ)器。[〇〇79]圖4A是根據(jù)一個(gè)實(shí)施例示出了圖3的數(shù)據(jù)處理設(shè)備如何通過運(yùn)行計(jì)算描述符指令和相關(guān)聯(lián)的分段掃描指令的多次迭代被設(shè)置來對一組數(shù)據(jù)元素執(zhí)行分段操作的流程圖。如通過圖4中的步驟200所指示的,參數(shù)N指示在單指令多數(shù)據(jù)結(jié)構(gòu)(SMD)處理單元中用以執(zhí)行分段掃描操作的并行處理通道的數(shù)目。在圖3的示例中,SIMD處理單元將采用掃描單元 120的形式,盡管在一個(gè)替選的實(shí)施例中掃描單元可結(jié)合ALU 125使用,以便執(zhí)行分段掃描操作,例如通過將掃描操作的最終部分57委派給ALU 125。在一個(gè)具體的實(shí)施例中,如在圖2 中所示的,N將等于8。[0〇8〇]如在圖4A的步驟200中還示出的,參數(shù)X標(biāo)識在要被處理的數(shù)據(jù)元素組中的數(shù)據(jù)元素的總數(shù)。在該示例中,假設(shè)X大于N,并且相應(yīng)地貫穿掃描單元的多次迭代將需要被執(zhí)行, 以便處理所有的數(shù)據(jù)元素。最后,在步驟200處,指針P被設(shè)定等于0。
[0081]在步驟205處,前N個(gè)數(shù)據(jù)元素被獲取。這將通常通過如下過程而發(fā)生:在矢量操作數(shù)被指定作為針對分段掃描指令的輸入操作數(shù)之前,將該N個(gè)數(shù)據(jù)元素儲(chǔ)存在矢量寄存器文件140內(nèi)的一個(gè)矢量寄存器中。
[0082]在步驟210處,從指針P開始的N個(gè)描述符元素被加載到矢量寄存器V中。在一個(gè)實(shí)施例中,矢量寄存器V是矢量寄存器文件140內(nèi)的矢量寄存器中的一個(gè),并且該矢量寄存器V 將被指定作為針對計(jì)算描述符指令的輸入操作數(shù)。如之前參照圖1所討論的,在一個(gè)實(shí)施例中的每個(gè)描述符元素采用32位有符號值的形式。
[0083]在步驟210之后,通過使用矢量寄存器V作為源操作數(shù),計(jì)算描述符指令在計(jì)算描述符單元150內(nèi)被運(yùn)行,以便生成掩碼和可選的標(biāo)志值,如之前參照圖1所討論的。如之后將從圖7的討論中顯而易見的,在使用矢量寄存器V內(nèi)的描述符元素之前,從描述符元素中減去由分段掃描過程的任何先前迭代處理的數(shù)據(jù)元素的總數(shù)的值。因此,在第一次迭代中,沒有數(shù)據(jù)元素會(huì)是已被處理過的,并且相應(yīng)地所使用的描述符元素是未經(jīng)修正的。假設(shè)矢量長度為8(即在snm單元中有8條并行處理通道),并且在每次之前迭代中8個(gè)數(shù)據(jù)元素在這些并行處理通道內(nèi)被處理,然后在第二次迭代中從輸入描述符元素中將減去值8,在第三次迭代中從描述符元素中將減去值16,以此類推?;诮?jīng)修改的描述符元素,通過使用先前參考圖1所討論的方法,掩碼被生成。
[0084]雖然在一個(gè)實(shí)施例中該減法過程被并入作為計(jì)算描述符指令的運(yùn)行的一部分,但是還可以被理解的是,在一個(gè)替選的實(shí)施例中,在矢量寄存器被指定作為針對計(jì)算描述符指令的輸入操作數(shù)之前,獨(dú)立指令可以被用于修改矢量寄存器文件140內(nèi)的矢量寄存器的內(nèi)容,使得一旦計(jì)算描述符指令被運(yùn)行,便不要求修改輸入矢量操作數(shù)內(nèi)指定的描述符元素。[〇〇85] 在步驟215后,在步驟220處通過在SMD處理單元中使用掩碼以維持段分離,分段操作被執(zhí)行,如之前參照圖2所討論的。在一個(gè)實(shí)施例中,分段掃描指令被用于使得掃描單元120(以及可選的ALU 125)執(zhí)行所需的掃描操作,其中當(dāng)分段掃描操作運(yùn)行時(shí),掃描指令的一個(gè)輸入指定包含要被處理的數(shù)據(jù)元素的矢量操作數(shù),并且掃描指令的另一輸入指定包含要被使用的掩碼的斷言寄存器。
[0086]在步驟225處,存在有將在之后參考圖4B來討論的可選的標(biāo)志評估步驟,該步驟的實(shí)行取決于計(jì)算描述符指令是否被用于操縱標(biāo)志160之一的值。[〇〇87]在步驟230處,接著判斷是否所有X個(gè)數(shù)據(jù)元素已被處理,如果沒有,則過程前行至步驟235,在此處計(jì)算段計(jì)數(shù)值C。具體地,段計(jì)數(shù)C標(biāo)識在剛剛完成的迭代中被處理的段的數(shù)目??紤]圖1的示例,因此將會(huì)是這樣的情況,針對那次迭代,C將被設(shè)定等于2。[〇〇88]在步驟235后,參數(shù)P遞增了段計(jì)數(shù)C的值。此后,在步驟245處,接下來的N個(gè)數(shù)據(jù)元素被獲取,例如通過加載這些數(shù)據(jù)元素到矢量寄存器文件140內(nèi)的矢量寄存器中,這些數(shù)據(jù)元素接著將被指定作為針對下一分段掃描指令的輸入操作數(shù)。此后,過程返回至步驟210。 此時(shí),從指針P開始被加載到矢量寄存器V中的N個(gè)描述符元素現(xiàn)在將取決于在步驟240處計(jì)算出的指針P的經(jīng)修改的值。[〇〇89]上述過程將重復(fù),直到所有的數(shù)據(jù)元素已被處理完,接著該過程將在步驟250處結(jié)束。應(yīng)當(dāng)注意的是,在最終迭代中,可以是這樣的情況,即在步驟245處要被處理的數(shù)據(jù)元素少于N個(gè)。在這種情況下,矢量寄存器(剩余數(shù)據(jù)元素被加載到該矢量寄存器中)也可包括一些偽數(shù)據(jù),以填滿矢量操作數(shù)的剩余數(shù)據(jù)元素。還可行的是,使用斷言控制信息將掃描單元 120(以及ALU 125)內(nèi)的某些并行處理通道禁用,以便關(guān)閉通道內(nèi)的沒有對有效數(shù)據(jù)進(jìn)行運(yùn)算的處理元件。
[0090]圖4B是根據(jù)一個(gè)實(shí)施例的示出了可選的標(biāo)志評估步驟225的流程圖。在步驟260 處,判斷標(biāo)志是否在先前步驟215處已經(jīng)通過計(jì)算描述符指令的運(yùn)行被設(shè)定。如果沒有,則無需采取動(dòng)作。然而,如果標(biāo)志已被設(shè)定,則可從針對當(dāng)前迭代的矢量寄存器V內(nèi)的N個(gè)描述符元素中判斷每個(gè)零長度段的位置。在一個(gè)實(shí)施例中,每個(gè)零長度段由具有相同值的兩個(gè)連續(xù)的描述符元素的存在指示。對于任何經(jīng)確定的零長度段,則在步驟270處,預(yù)定值(例如,邏輯值0)被插入在步驟220處執(zhí)行的分段操作的輸出中的每個(gè)零長度段的位置處。因此,考慮之前圖1和圖2的示例,如果輸入寄存器10把值1、1和6作為其前三個(gè)描述符元素,則如圖2所示的分段掃描操作將被執(zhí)行,但在步驟270處預(yù)定值將插入與第一段的最后一個(gè)元素相關(guān)聯(lián)的值(,即值^+#8)和針對第二段的求和所產(chǎn)生的值之間。
[0091]將被理解的是,預(yù)定值不必是邏輯值0,并且可能是適合于具體實(shí)施方案的任何其它預(yù)定值。此外,除了預(yù)定值的插入,該標(biāo)志的存在可用于在需要時(shí)調(diào)用其他附加/替代的動(dòng)作。例如,如果零長度段的出現(xiàn)是不被期望的且在輸入數(shù)據(jù)的生成中有錯(cuò)誤癥狀,則可采取異?;蚪K止運(yùn)行。[〇〇92]圖5A根據(jù)一個(gè)實(shí)施例示出了圖3的計(jì)算描述符單元150內(nèi)提供的用以從描述符元素的輸入操作數(shù)中生成掩碼的組件。如圖5A所示,假設(shè)矢量操作數(shù)包含8個(gè)描述符元素(標(biāo)示為描述符元素〇至7),并且每個(gè)描述符元素的32位無符號值被輸入至相應(yīng)的電路塊300、 305、310、315。如果給定8條并行處理通道,則只有每個(gè)32位無符號值的最低三個(gè)有效位需由每個(gè)電路300、305、310和315內(nèi)的解碼器塊325檢查(reviewed)。解碼器基于這些三個(gè)位輸出8位掩碼值,該8位掩碼值具有至多一個(gè)被設(shè)定以標(biāo)識段結(jié)尾位置(該段結(jié)尾位置由這些最低三個(gè)有效位的值指示)的位。[〇〇93]此外,剩余位3至30通過或非(N0R)門被傳送,每當(dāng)所有這些位被設(shè)定為0時(shí),該或非門將產(chǎn)生邏輯值1。特別地,因?yàn)樵?2位無符號值位于范圍0至7中,這將表明來自解碼器的輸出是有效的,并相應(yīng)地標(biāo)識出在當(dāng)前8條并行處理通道內(nèi)的段邊界。
[0094]從或非門320輸出的邏輯值1將使得來自解碼器325的輸出從復(fù)用器330中被輸出。 然而,當(dāng)描述符元素的3至30位中的任何位被設(shè)定時(shí),這將使得邏輯值0從或非門320中輸出,并使得復(fù)用器330選擇包含8個(gè)邏輯值0的默認(rèn)掩碼作為該復(fù)用器330的輸出。[〇〇95] 然后,所有通過各電路塊300、305、310及315生成的掩碼通過使用或(0R)門340進(jìn)行邏輯或操作,以便生成掩碼,該掩碼隨后在當(dāng)實(shí)行掃描分段操作時(shí)被使用。[〇〇96]圖5B示出了計(jì)算描述符單元150內(nèi)可提供的在相鄰段描述符具有相同的值的情況下以便可選地設(shè)定標(biāo)志的電路。特別地,所示的電路用于比較在段描述符的輸入矢量操作數(shù)中的前兩個(gè)描述符,但應(yīng)當(dāng)理解的是,相同的電路可被復(fù)制用于每對其它相鄰段描述符。 只有最低的三個(gè)有效位需要進(jìn)行比較,并且來自這對段描述符的相應(yīng)位被輸入至相關(guān)聯(lián)的同或(XN0R)門350、355、360。將被理解的是,如果每個(gè)同或門的兩個(gè)輸入是相同的,則同或門將僅輸出邏輯值1。如果來自同或門350、355及360的所有三個(gè)輸出是邏輯值1,那么這意味著這兩個(gè)段描述符的被比較的三個(gè)最低有效位是相同的。針對所考慮的該兩個(gè)段描述符,由圖5A中的相關(guān)聯(lián)的掩碼生成電路生成的有效元素信息被傳送穿過與非門365,以便生成合格信號,該合格信號接著與來自同或門的輸出一起被輸入至與(AND)門370。相應(yīng)地,將被理解的是,如果這兩個(gè)段描述符的最低三個(gè)有效位的是相同的,并且針對該兩個(gè)段描述符有效元素信號已被生成,則來自與門370的輸出將會(huì)是邏輯值1。對于所有其他情況,來自與門370的輸出將會(huì)是邏輯值0。來自每個(gè)用于評估相鄰段描述符對的電路的輸出被接著輸入至或(0R)門375,如果任何這些電路產(chǎn)生了從它們的與門370輸出的邏輯值1,則標(biāo)志接著被設(shè)定。[〇〇97]應(yīng)當(dāng)注意的是,在圖5A和5B的示例中,假設(shè)了在每次迭代期間所有8條并行處理通道均被用于處理數(shù)據(jù)元素。然而,在替選的實(shí)施例中,每通道斷言可被提供,以使由指令所考慮的有效數(shù)據(jù)元素的數(shù)目受到限制,使得輸入矢量包含少于8個(gè)有效數(shù)據(jù)元素。在這種情況下,可以理解的是,當(dāng)生成掩碼及標(biāo)志時(shí),將需要額外元件以利用斷言信息來使得某些至或門340、375的輸入被禁用。例如,當(dāng)處理自適應(yīng)算法時(shí),這種技術(shù)可以用于修改段邊界(動(dòng)態(tài)地)。
[0098]圖6示出了可采用所描述的實(shí)施例的分段操作的算法的示例。具體地,圖6示出了稀疏矩陣相乘算法,其中數(shù)據(jù)元素405的陣列與向量410相乘,以生成結(jié)果415。具體地,針對矩陣405的每一行,該行中的有效數(shù)據(jù)元素與矢量410中的相應(yīng)矢量元素相乘,這些相乘結(jié)果接著被累加以針對每一行生成一個(gè)結(jié)果。在存儲(chǔ)器內(nèi),構(gòu)成陣列405的數(shù)據(jù)可以表示為一連串的數(shù)據(jù)值400。應(yīng)當(dāng)注意的是,邏輯值0通常并未明確地存儲(chǔ)在存儲(chǔ)器中(例如,當(dāng)使用耶魯(Yale)格式用于稀疏矩陣時(shí))。
[0099]當(dāng)使用所描述的實(shí)施例的分段操作方法時(shí),所有矢量相乘操作將被執(zhí)行以產(chǎn)生包含在塊415內(nèi)的各種相乘結(jié)果,這些結(jié)果作為用于分段操作的一組數(shù)據(jù)元素。然而,在這一階段,這些結(jié)果的累加還未進(jìn)行。取而代之的是,累加可經(jīng)由計(jì)算描述符指令和相關(guān)聯(lián)的分段指令的多次迭代來進(jìn)行。
[0100]在圖6所示的示例中,假設(shè)矢量處理電路提供了4條并行處理通道,并相應(yīng)地在每次迭代中多達(dá)4個(gè)數(shù)據(jù)元素可被輸入至矢量處理電路。數(shù)據(jù)元素是如何在每次迭代中被消耗的示意地示于圖6的下半部分,用垂直虛線示出了數(shù)據(jù)元素是如何分到四個(gè)數(shù)據(jù)元素塊中,且用垂直實(shí)線420、425、430、435及440標(biāo)識需要被識別的段邊界。因此,在迭代1期間,計(jì)算描述符指令將被執(zhí)行以確定段邊界420,并且矢量處理電路接著將執(zhí)行分段操作以便生成針對第一段的在前三個(gè)通道中元素的累加。接著,第四通道中的數(shù)據(jù)元素將未經(jīng)修正地并且作為標(biāo)量進(jìn)位輸出值被輸出,以供作為標(biāo)量進(jìn)位輸入值被輸入至下一次迭代。在該下一次迭代中,計(jì)算描述符指令的實(shí)行將識別段邊界425。相應(yīng)地,在分段操作的這次迭代期間,第一通道的數(shù)據(jù)元素將被添加至由來自第一次迭代的標(biāo)量進(jìn)位輸出值形成的標(biāo)量進(jìn)位輸入值,以便生成針對第二段的結(jié)果。此外,在第二、第三和第四通道中的數(shù)據(jù)元素將被累加在一起以產(chǎn)生一個(gè)結(jié)果,該結(jié)果接著被作為標(biāo)量進(jìn)位輸出值傳送,該標(biāo)量進(jìn)位輸出值用作第三次迭代中的標(biāo)量進(jìn)位輸入值。
[0101]在第三次迭代中,計(jì)算描述符指令的運(yùn)行將識別出三個(gè)段邊界430、435及440。因此,在分段操作的實(shí)行期間,在第一通道中的數(shù)據(jù)元素將被添加至標(biāo)量進(jìn)位輸入值以生成針對第三段的結(jié)果,并且單獨(dú)地,在第二和第三通道中的數(shù)據(jù)元素將被加在一起以生成針對第四段的結(jié)果。第四通道中的數(shù)據(jù)元素將未經(jīng)修正地傳送并且構(gòu)成針對第五段的結(jié)果; 接著將不存在針對本次迭代的標(biāo)量進(jìn)位輸出值。
[0102]最后,在第四次迭代中,將只有一個(gè)有效數(shù)據(jù)元素,該有效數(shù)據(jù)元素將未經(jīng)修正地傳送以構(gòu)成針對第六段的結(jié)果。
[0103]因此,將被理解的是,僅通過使用貫穿矢量處理電路的四次迭代,便生成六個(gè)累加結(jié)果(共同地由參考標(biāo)號415標(biāo)注)中每一個(gè)結(jié)果。
[0104]圖7示出了一組經(jīng)封裝的描述符500如何在多次迭代期間被使用,以便創(chuàng)建針對每次迭代所需的掩碼及標(biāo)志。在第一次迭代期間,單位跨度加載操作(unit stride load operat1n)被執(zhí)行,以便將一系列8個(gè)段描述符從儲(chǔ)存在存儲(chǔ)器中的一組經(jīng)封裝的描述符 500加載至輸入矢量操作數(shù)505中。接著,使用減法操作以從這些段描述符的值中減去由任何先前迭代所處理的數(shù)據(jù)元素的總數(shù)目。在第一次迭代期間,沒有數(shù)據(jù)元素在先前已被處理過,并且因此在此過程期間不做出調(diào)制,結(jié)果是矢量操作數(shù)510關(guān)于矢量操作數(shù)505是未改變的。接著,計(jì)算描述符指令被運(yùn)行以便生成掩碼515和標(biāo)志520。該過程之前已參照圖1 進(jìn)行了討論。該過程的結(jié)果是,前兩個(gè)段描述符“1”和“6”被使用,并且因此指針被更新以指示該事實(shí),如由參考標(biāo)號525所指示的。[〇1〇5]因此,在第二次迭代期間,單位跨度加載又從組500中的第三個(gè)描述符“9”開始加載另8個(gè)描述符530。在前一次迭代期間,假設(shè)有8個(gè)數(shù)據(jù)元素通過使用掩碼515進(jìn)行了處理, 并且因此從每個(gè)段描述符中減去值8,以得到經(jīng)修改的操作數(shù)535。接著,該經(jīng)修改的操作數(shù) 535被計(jì)算描述符指令所使用以生成掩碼540和相關(guān)聯(lián)的標(biāo)志545。如可從圖7中看出的,前三個(gè)段描述符在這個(gè)過程期間被使用,并且其結(jié)果是,指針被更新以將這三個(gè)段描述符排除進(jìn)一步考慮之外,如由參考標(biāo)記550所指示的。應(yīng)當(dāng)注意的是,減法(被執(zhí)行以將操作數(shù) 530轉(zhuǎn)換成經(jīng)修正的操作數(shù)535)可以在計(jì)算描述符指令被運(yùn)行之前由獨(dú)立指令執(zhí)行。在這種情況下,由計(jì)算描述符指令所識別的矢量寄存器會(huì)已經(jīng)包含經(jīng)修正的段描述符535。替選地,一旦計(jì)算描述符指令從指定的矢量寄存器中獲得輸入段描述符530,該計(jì)算描述符指令本身可執(zhí)行該減法。[〇1〇6]在第三次迭代中,一系列段描述符555被加載至矢量寄存器中,然后減去2*矢量長度的減法被執(zhí)行以便從每個(gè)段描述符值中減去16,以產(chǎn)生經(jīng)修改的輸入矢量操作數(shù)560。在這種情況下,每個(gè)段描述符值大于矢量長度,因此在掩碼565中的所有位都被清除。標(biāo)志570保持在邏輯值0。接著,矢量處理電路對針對第三次迭代供給的8個(gè)數(shù)據(jù)元素執(zhí)行全寬操作, 因?yàn)樗羞@些元素被包含在相同段中。因?yàn)闆]有使用段描述符,指針沒有被更新,如參考標(biāo)記575所指示的。
[0107]因此,在第四迭代中,該相同的8個(gè)段描述符組被加載至輸入操作數(shù)寄存器580中, 但此時(shí)值24被減去(因?yàn)榍叭蔚看味紝?個(gè)數(shù)據(jù)元素進(jìn)行操作)。其結(jié)果是得到經(jīng)修改的輸入矢量操作數(shù)585。一旦計(jì)算描述符指令通過使用該經(jīng)修改的矢量操作數(shù)被運(yùn)行,其結(jié)果是生成掩碼590。此外,由于所使用的其中兩個(gè)段描述符具有相同值,標(biāo)志595被設(shè)定。
[0108]接著,以上所描述的過程可針對每個(gè)剩余的經(jīng)封裝的描述符被重復(fù),直到所有的數(shù)據(jù)元素已被處理。
[0109]雖然為了便于說明,在圖7中假設(shè)在每次迭代時(shí)描述符被重新加載,然而可避免從存儲(chǔ)器重復(fù)加載的需要,并且取而代之的是,加載操作可被修改,以使得僅在額外段描述符中需要替代在先前迭代中已消耗的段描述符時(shí)才加載。
[0110]在圖2中分段掃描操作被執(zhí)行,但在一個(gè)替選的實(shí)施例中分段減少操作被執(zhí)行,如圖8所示。如從圖8與圖2的比較中可以看出的,掩碼以相同的方式被生成和使用,但在操作結(jié)束時(shí),只有每段的最高通道的值被保留。因此,對于第一段,結(jié)果V1+VQ+s被保存在結(jié)果矢量600的第一元素位置605中。類似地,結(jié)果V6+V5+V4+V3+V2被儲(chǔ)存在第二元素位置610中。最終通道的內(nèi)容,即V7,在標(biāo)量進(jìn)位輸出值615中被輸出供隨后迭代使用。為了便于說明,分段減少操作被示為執(zhí)行與分段掃描操作一致的所有的中間累加運(yùn)算,但應(yīng)當(dāng)理解的是,不是所有的這些中間計(jì)算都需要被執(zhí)行。
[0111]當(dāng)根據(jù)圖8中所示的最后步驟移動(dòng)結(jié)果時(shí),所有含有不需要的結(jié)果的通道可通過使用斷言被去激活。此外,進(jìn)位值僅當(dāng)最高通道不表示特定段的最終通道時(shí)才被維持。相反,如果由計(jì)算描述符指令標(biāo)識的最后段已完成,則進(jìn)位值將被設(shè)定等于中立值以標(biāo)識不存在進(jìn)位值。[〇112]圖9根據(jù)一個(gè)實(shí)施例示意性地示出了計(jì)算描述符指令內(nèi)提供的字段的圖表。操作碼700標(biāo)識指令是計(jì)算描述符指令。斷言源字段705是可選字段,該字段可用于將某些段描述符排除在考慮范圍之外。矢量源字段710標(biāo)識包含有多個(gè)段描述符的矢量寄存器,例如先前示例中的8個(gè)段描述符。斷言目的地寄存器715標(biāo)識斷言寄存器文件155內(nèi)的斷言寄存器, 由計(jì)算描述符操作生成的掩碼將要被存儲(chǔ)至該斷言寄存器中。
[0113]圖10根據(jù)一個(gè)實(shí)施例示意性地示出了分段減少指令(或?qū)嶋H上為分段掃描指令) 內(nèi)提供的字段的圖表。操作碼720標(biāo)識指令是分段減少(或掃描)指令。斷言源0字段730標(biāo)識斷言寄存器,該斷言寄存器儲(chǔ)存由先前運(yùn)行的計(jì)算描述符指令生成的掩碼。斷言源1字段 725是可選字段,該字段允許又一斷言信息被標(biāo)識以禁用矢量處理電路內(nèi)的一個(gè)或多個(gè)并行處理通道。字段735標(biāo)識包含標(biāo)量進(jìn)位輸入值的標(biāo)量寄存器,而字段740標(biāo)識目的地寄存器,標(biāo)量進(jìn)位輸出值將被儲(chǔ)存至該目的地寄存器中。在一個(gè)實(shí)施例中,這兩個(gè)寄存器可以被設(shè)定為是相同的寄存器,從而釋放指令內(nèi)的某些編碼空間。
[0114]最后,字段745標(biāo)識包含要被分段指令處理的源數(shù)據(jù)元素的矢量源寄存器,并且類似地,字段750標(biāo)識目的地寄存器,結(jié)果要被儲(chǔ)存至該目的地寄存器中。如標(biāo)量源寄存器和標(biāo)量目的地寄存器,這些矢量源寄存器和矢量目的寄存器可以被設(shè)定為是相同的寄存器, 從而節(jié)省了指令內(nèi)的編碼空間。此外,這兩個(gè)斷言源字段725、730的內(nèi)容可以在分段減少指令發(fā)布之前合并為單個(gè)斷言掩碼。例如,通過計(jì)算描述符指令的運(yùn)行產(chǎn)生的掩碼可與另一斷言掩碼進(jìn)行邏輯與計(jì)算以產(chǎn)生經(jīng)改進(jìn)的掩碼,該經(jīng)改進(jìn)的掩碼然后被儲(chǔ)存在一個(gè)斷言寄存器內(nèi),該經(jīng)改進(jìn)的掩碼正是之后由分段減少指令所參照的掩碼。
[0115]圖11示出了可使用的虛擬機(jī)實(shí)現(xiàn)方式。雖然前面描述的實(shí)施例在用于操作支持有關(guān)的技術(shù)的特定處理硬件的裝置及方法方面實(shí)現(xiàn)本發(fā)明,但提供所謂的硬件設(shè)備的虛擬機(jī)實(shí)現(xiàn)方式也是可行的。這些虛擬機(jī)實(shí)現(xiàn)方式運(yùn)行在主機(jī)處理器830上,該主機(jī)處理器通常運(yùn)行支持虛擬機(jī)程序810的主機(jī)操作系統(tǒng)820。時(shí)常,需要提供強(qiáng)大的處理器使得虛擬機(jī)實(shí)現(xiàn)方式以合理的速度運(yùn)行,但是這種方法可能在某些情況下是合乎情理的,如當(dāng)出于兼容性或重新使用的理由希望運(yùn)行另一處理器本地的代碼時(shí)。虛擬機(jī)程序810能夠運(yùn)行應(yīng)用程序 (或操作系統(tǒng))800,所得結(jié)果與由這種真實(shí)硬件設(shè)備運(yùn)行程序所得到的結(jié)果是相同的。因此,程序指令,包括以上所描述的計(jì)算描述符指令和分段指令,可從應(yīng)用程序800內(nèi)使用虛擬機(jī)程序810被執(zhí)行。
[0116]如從以上討論中顯而易見的,計(jì)算描述符指令的使用使得每通道斷言信息被生成,該每通道斷言信息使得分段操作在提供N條并行處理通道的矢量處理電路內(nèi)被執(zhí)行。具體地,通過使用每通道斷言信息,矢量處理電路的并行處理通道的更好的利用可以實(shí)現(xiàn),從而允許snro數(shù)據(jù)路徑內(nèi)更有效地執(zhí)行某些操作。有各種各樣的可以從這種方法中獲益的操作,一個(gè)示例是基于嵌套循環(huán)的算法,在該示例中多個(gè)所確定的段可包含與嵌套循環(huán)內(nèi)的預(yù)定循環(huán)的每次迭代相關(guān)聯(lián)的數(shù)據(jù)元素。
[0117]雖然稀疏矩陣乘法被給定作為可從所描述的分段操作方法中獲益的算法的一個(gè)示例,但將被理解的是,還存在有許多其他算法,類似地,這些其他算法也可能通過使用這種分段操作方法更有效地在SMD數(shù)據(jù)路徑內(nèi)被執(zhí)行。
[0118]在一個(gè)實(shí)施例中,計(jì)算描述符指令的輸入矢量操作數(shù)內(nèi)的每個(gè)段描述符使用指針表示,即每個(gè)值指示段的結(jié)尾,而在一種替選的方法中,每個(gè)段描述符可標(biāo)識段的長度,其中當(dāng)前段的結(jié)尾基于與前一段的偏移量來計(jì)算。
[0119]由計(jì)算描述符指令生成的輸出掩碼可被儲(chǔ)存在專用矢量掩碼寄存器中,或者在一個(gè)替選的實(shí)施例中,如參考圖3所討論的,可被儲(chǔ)存在斷言寄存器文件155內(nèi)的經(jīng)識別的斷言寄存器內(nèi)。在又一替選的實(shí)施例中,矢量寄存器可用于儲(chǔ)存針對多次循環(huán)的掩碼,使得在矢量寄存器內(nèi)的每個(gè)元素標(biāo)識掩碼中的一個(gè)掩碼。如另一替選的實(shí)施例,標(biāo)量寄存器可用于儲(chǔ)存每個(gè)掩碼,其中掩碼的每一位表示針對相對應(yīng)的要由分段操作處理的矢量操作數(shù)的數(shù)據(jù)元素的掩碼值(〇或1)。
[0120]此外,在所描述的實(shí)施例中,邏輯值1被用來識別掩碼內(nèi)的段的結(jié)尾(據(jù)發(fā)現(xiàn),這種格式是特別適合于多個(gè)分段指令之間傳播值),而在替選的實(shí)施例中,邏輯值1可用于標(biāo)記段的開始,或相鄰段可以通過以下方式彼此區(qū)分開,通過使用1的序列(用于第一段),接著交替使用〇的序列(用于第二段),然后再使用又一 1的序列(用于第三段),以此類推。[〇121]如先前所討論的,標(biāo)志值的設(shè)置和清除是可選的。在所描述的實(shí)施例中,當(dāng)決定是否設(shè)定標(biāo)志時(shí),相鄰段描述符被進(jìn)行比較,但該技術(shù)沒有必要被受限于連續(xù)段描述符的核查(review),并且在一個(gè)替選的實(shí)施例中取而代之的是當(dāng)決定是否設(shè)定標(biāo)志時(shí),特定輸入操作數(shù)內(nèi)的所有段描述符可以相互進(jìn)行比較。專用標(biāo)志可以被引入以儲(chǔ)存標(biāo)志值,或者替選地,再次使用現(xiàn)有的標(biāo)志(例如,進(jìn)位標(biāo)志)是可行的。
[0122]雖然特定的實(shí)施例已在本文中描述,但可以理解的是,本發(fā)明并不限于此,本發(fā)明的范圍內(nèi)可以做出對實(shí)施例的許多修改和增加。例如,獨(dú)立權(quán)利要求的特征可以與從屬權(quán)利要求的特征做出各種組合,而不脫離本發(fā)明的范圍。
【主權(quán)項(xiàng)】
1.一種數(shù)據(jù)處理設(shè)備,包括:矢量寄存器存儲(chǔ)器,該矢量寄存器存儲(chǔ)器被配置為儲(chǔ)存矢量操作數(shù);矢量處理電路,該矢量處理電路提供N條并行處理通道,并且被配置為對由指定矢量操 作數(shù)提供的多達(dá)N個(gè)數(shù)據(jù)元素執(zhí)行分段操作,每個(gè)數(shù)據(jù)元素被分配給所述N條通道中的一 條,所述多達(dá)N個(gè)數(shù)據(jù)元素構(gòu)成多個(gè)段,且所述分段操作的實(shí)行包括對每段的數(shù)據(jù)元素執(zhí)行 獨(dú)立操作,所述獨(dú)立操作涉及包含相關(guān)段的數(shù)據(jù)元素的通道之間的相互作用;以及斷言生成電路,該斷言生成電路被配置為響應(yīng)于指定包括多個(gè)段描述符的輸入矢量操 作數(shù)的計(jì)算描述符指令,以生成每通道斷言信息,所述每通道斷言信息在當(dāng)分段操作被執(zhí) 行時(shí)被所述矢量處理電路用以維持所述多個(gè)段中各段之間的邊界,以便防止包含來自不同 段的數(shù)據(jù)元素的通道之間的相互作用。2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理設(shè)備,其中所述矢量處理電路包括多個(gè)流水線級,并 且被配置為采用所述每通道斷言信息來控制在所述多個(gè)流水線級的各流水線級中執(zhí)行的 計(jì)算,以便維持所述多個(gè)段中各段之間的邊界。3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)處理設(shè)備,其中在每個(gè)流水線級處,矢量處理電路被配置 為依據(jù)所述每通道斷言信息選擇性地禁用一個(gè)或多個(gè)計(jì)算,以便防止包含來自不同段的數(shù) 據(jù)元素的通道之間的相互作用。4.根據(jù)權(quán)利要求3所述的數(shù)據(jù)處理設(shè)備,其中針對一個(gè)或多個(gè)流水線級中的每一個(gè),所 述矢量處理電路被配置為對所述每通道斷言信息執(zhí)行邏輯操作,以便產(chǎn)生識別在該流水線 級處哪些計(jì)算要被禁用的控制數(shù)據(jù)。5.根據(jù)任何前述權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中所述每通道斷言信息包括針對每 條通道的二進(jìn)制值。6.根據(jù)權(quán)利要求5所述的數(shù)據(jù)處理設(shè)備,其中所述二進(jìn)制值被設(shè)定為用以標(biāo)識每條分 配有段的末位數(shù)據(jù)元素的通道的第一值,以及被設(shè)定為用于標(biāo)識所有其他通道的第二值。7.根據(jù)權(quán)利要求5所述的數(shù)據(jù)處理設(shè)備,其中所述二進(jìn)制值被設(shè)定為用以標(biāo)識包含有 一個(gè)段的數(shù)據(jù)元素的通道的第一值,以及被設(shè)定為用以標(biāo)識包含有相鄰段的數(shù)據(jù)元素的通 道的第二值。8.根據(jù)任何前述權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中所述斷言生成電路還被配置為在 所述多個(gè)段描述符指示至少一個(gè)不具有數(shù)據(jù)元素的段的存在的情況下設(shè)定控制字段。9.根據(jù)權(quán)利要求8所述的數(shù)據(jù)處理設(shè)備,其中所述矢量處理電路響應(yīng)于被設(shè)定的所述 控制字段以執(zhí)行與所述分段操作相關(guān)聯(lián)的額外處理步驟。10.根據(jù)權(quán)利要求9所述的數(shù)據(jù)處理設(shè)備,其中所述額外處理步驟包括:從所述多個(gè)段 描述符識別每個(gè)不具有數(shù)據(jù)元素的段的位置,并且在由所述分段操作生成的結(jié)果數(shù)據(jù)內(nèi)的 那個(gè)位置處插入預(yù)定的數(shù)據(jù)值。11.根據(jù)任何前述權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中所述分段操作還指定標(biāo)量進(jìn)位 輸入值,并且所述分段操作的實(shí)行產(chǎn)生結(jié)果數(shù)據(jù)元素的矢量以及標(biāo)量進(jìn)位輸出值。12.根據(jù)權(quán)利要求11所述的數(shù)據(jù)處理設(shè)備,其中所述矢量處理電路響應(yīng)于分段指令以 執(zhí)行所述分段操作,并且所述數(shù)據(jù)處理設(shè)備被配置為運(yùn)行所述計(jì)算描述符指令和所述分段 指令的多次迭代來對包括多于N個(gè)數(shù)據(jù)元素的數(shù)據(jù)元素組執(zhí)行所述分段操作,由所述分段 操作針對一次迭代的實(shí)行產(chǎn)生的所述標(biāo)量進(jìn)位輸出值被用作所述分段操作在下次迭代中實(shí)行的所述標(biāo)量進(jìn)位輸入值。13.根據(jù)任何前述權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中所述矢量處理電路響應(yīng)于分段 指令以執(zhí)行所述分段操作,并且所述數(shù)據(jù)處理設(shè)備被配置為運(yùn)行所述計(jì)算描述符指令和所 述分段指令的多次迭代來對包括多于N個(gè)數(shù)據(jù)元素的數(shù)據(jù)元素組執(zhí)行所述分段操作,所述 數(shù)據(jù)元素組包括多個(gè)段。14.根據(jù)權(quán)利要求13所述的數(shù)據(jù)處理設(shè)備,其中在每個(gè)段中數(shù)據(jù)元素的數(shù)目是無規(guī)律 的。15.根據(jù)權(quán)利要求13或14所述的數(shù)據(jù)處理設(shè)備,其中所述段標(biāo)識與嵌套循環(huán)內(nèi)的預(yù)定 循環(huán)的每次迭代相關(guān)聯(lián)的數(shù)據(jù)元素。16.根據(jù)權(quán)利要求13至15中任一權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中所述矢量處理電 路被配置為執(zhí)行稀疏矩陣乘法操作,其中第一數(shù)據(jù)元素的稀疏矩陣與第二矢量元素的矢量 相乘以產(chǎn)生針對稀疏矩陣的各行的若干相乘結(jié)果,所述相乘結(jié)果構(gòu)成被執(zhí)行所述分段操作 的所述數(shù)據(jù)元素組,其中每一段包括針對稀疏矩陣的各行中的一行的相乘結(jié)果。17.根據(jù)權(quán)利要求16所述的數(shù)據(jù)處理設(shè)備,其中所述分段操作對每一段內(nèi)的相乘結(jié)果 執(zhí)行累加運(yùn)算。18.根據(jù)任何前述權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中所述段描述符提供指向每一段 的結(jié)尾和每一段的開始中的一者的指針。19.根據(jù)權(quán)利要求1至17中任一權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中所述段描述符標(biāo)識每一段的長度。20.根據(jù)任何前述權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中所述多個(gè)段描述符包括帶符號整數(shù)。21.根據(jù)權(quán)利要求13至20中的任一權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中:所述多個(gè)段描述符包括帶符號整數(shù);以及在每次迭代中,輸入矢量操作數(shù)被更新以移除在前一次迭代期間用于生成針對所述前 一次迭代的所述每通道斷言信息所使用的任何段描述符。22.根據(jù)權(quán)利要求21所述的數(shù)據(jù)處理設(shè)備,其中斷言生成電路被配置為,在生成針對本 次迭代的每通道斷言信息之前,要從為所述本次迭代所提供的所述多個(gè)段描述符中減去等 于由所有先前迭代處理的數(shù)據(jù)元素的總數(shù)目的值。23.根據(jù)任何前述權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中所述分段操作是分段掃描操作 和分段減少操作中的一者。24.根據(jù)任何前述權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,還包括提供多個(gè)斷言寄存器的斷言 寄存器文件,并且所述計(jì)算描述符指令被配置為指定所述斷言寄存器中要存儲(chǔ)所述每通道 斷目彳目息的一個(gè)斷目寄存器。25.—種在數(shù)據(jù)處理設(shè)備內(nèi)執(zhí)行分段操作的方法,該數(shù)據(jù)處理設(shè)備具有配置為儲(chǔ)存矢 量操作數(shù)的矢量寄存器存儲(chǔ)器及提供N條并行處理通道的矢量處理電路,所述方法包括:在所述矢量處理電路內(nèi)對由指定矢量操作數(shù)提供的多達(dá)N個(gè)數(shù)據(jù)元素執(zhí)行分段操作, 每個(gè)數(shù)據(jù)元素被分配給所述N條通道中的一條,所述多達(dá)N個(gè)數(shù)據(jù)元素構(gòu)成多個(gè)段,且所述 分段操作的實(shí)行包括對每段的數(shù)據(jù)元素執(zhí)行獨(dú)立操作,所述獨(dú)立操作涉及包含相關(guān)段的數(shù) 據(jù)元素的通道之間的相互作用;以及響應(yīng)于指定包括多個(gè)段描述符的輸入矢量操作數(shù)的計(jì)算描述符指令,生成每通道斷言 信息,所述每通道斷言信息在當(dāng)分段操作被執(zhí)行時(shí)被所述矢量處理電路用以維持多個(gè)段的 各段之間的邊界,以便防止包含來自不同段的數(shù)據(jù)元素的通道之間的相互作用。26.—種數(shù)據(jù)處理設(shè)備包括:矢量寄存器存儲(chǔ)裝置,該矢量寄存器存儲(chǔ)裝置用于儲(chǔ)存矢量操作數(shù);矢量處理裝置,該矢量處理裝置用于提供N條并行處理通道,并且用于對由指定矢量操 作數(shù)提供的多達(dá)N個(gè)數(shù)據(jù)元素執(zhí)行分段操作,每個(gè)數(shù)據(jù)元素被分配給所述N條通道中的一 條,所述多達(dá)N個(gè)數(shù)據(jù)元素構(gòu)成多個(gè)段,且所述分段操作的實(shí)行包括對每段的數(shù)據(jù)元素執(zhí)行 獨(dú)立操作,所述獨(dú)立操作涉及包含相關(guān)段的數(shù)據(jù)元素的通道之間的相互作用;以及斷言生成裝置,該斷言生成裝置用于響應(yīng)于指定包括多個(gè)段描述符的輸入矢量操作數(shù) 的計(jì)算描述符指令來生成每通道斷言信息,所述每通道斷言信息在當(dāng)分段操作被執(zhí)行時(shí)被 所述矢量處理裝置用以維持多個(gè)段的各段之間的邊界,以便防止包含來自不同段的數(shù)據(jù)元 素的通道之間的相互作用。27.—種計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品以非暫態(tài)形式儲(chǔ)存計(jì)算機(jī)程序,所述計(jì)算 機(jī)程序用于控制計(jì)算機(jī)來提供針對程序指令的虛擬機(jī)運(yùn)行環(huán)境,所述計(jì)算機(jī)對應(yīng)于根據(jù)權(quán) 利要求1至24中任一項(xiàng)所述的數(shù)據(jù)處理設(shè)備。
【文檔編號】G06F9/30GK105960630SQ201580006725
【公開日】2016年9月21日
【申請日】2015年1月21日
【發(fā)明人】姆布·埃約勒-莫諾諾, 阿拉斯塔爾·大衛(wèi)·瑞德, 馬蒂亞斯·洛塔爾·博徹, 賈科莫·加布雷利
【申請人】Arm 有限公司