欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于處理矩陣數(shù)據(jù)的處理器和方法

文檔序號(hào):6427237閱讀:190來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):用于處理矩陣數(shù)據(jù)的處理器和方法
技術(shù)領(lǐng)域
本發(fā)明涉及對(duì)存儲(chǔ)在處理器中多個(gè)向量寄存器堆(vector register file)內(nèi)的矩陣的行和子列(subcolumn)進(jìn)行邏輯尋址的技術(shù)。
背景技術(shù)
單指令多數(shù)據(jù)(SIMD)向量處理環(huán)境可以用于執(zhí)行與向量和矩陣數(shù)學(xué)運(yùn)算有關(guān)的操作。這種數(shù)學(xué)處理可以涉及諸如圖形和數(shù)字視頻之類(lèi)的各種多媒體應(yīng)用。當(dāng)前與SIMD向量處理有關(guān)的問(wèn)題是由于需要靈活地對(duì)向量數(shù)據(jù)進(jìn)行操作而產(chǎn)生的。當(dāng)以標(biāo)準(zhǔn)的SIMD運(yùn)算操作時(shí),當(dāng)前將向量數(shù)據(jù)處理為具有多個(gè)元素的單個(gè)(水平方向)向量。因此,可以對(duì)矩陣的行以傳統(tǒng)方式進(jìn)行水平地訪問(wèn)。然而,經(jīng)常有必要將矩陣的列作為整體來(lái)訪問(wèn),用當(dāng)前技術(shù)實(shí)現(xiàn)這種訪問(wèn)是有問(wèn)題的。例如,為了訪問(wèn)矩陣的列通常要產(chǎn)生矩陣的轉(zhuǎn)置,這就存在著需要大量的轉(zhuǎn)移/拷貝(move/copy)指令的問(wèn)題,而且還增加了所需寄存器的數(shù)目(即,至少要加倍)。
因此,有必要開(kāi)發(fā)一種高效率的對(duì)SIMD向量處理中所用的一個(gè)矩陣的行和列進(jìn)行尋址的方法。

發(fā)明內(nèi)容
本發(fā)明提供一種處理器,這種理器包括M個(gè)獨(dú)立的向量寄存器堆,所述M個(gè)向量寄存器堆一起用來(lái)存儲(chǔ)一個(gè)具有L個(gè)數(shù)據(jù)元素的矩陣,每個(gè)數(shù)據(jù)元素具有B個(gè)二進(jìn)制位,所述矩陣具有N個(gè)行和M個(gè)列,所述L=N*M,每個(gè)列具有K個(gè)子列,所述N≥2,所述M≥2,所述K≥1,所述B≥1,所述N個(gè)行的每個(gè)行都是可尋址的,所述K個(gè)子列的每個(gè)子列都是可尋址的,所述處理器不重復(fù)存儲(chǔ)所述L個(gè)數(shù)據(jù)元素。
本發(fā)明提供了一種處理矩陣數(shù)據(jù)的方法,這種方法包括提供一個(gè)處理器;以及在所述處理器內(nèi)提供M個(gè)獨(dú)立的向量寄存器堆,所述M個(gè)向量寄存器堆一起用來(lái)存儲(chǔ)一個(gè)具有L個(gè)數(shù)據(jù)元素的矩陣,每個(gè)數(shù)據(jù)元素具有B個(gè)二進(jìn)制位,所述矩陣具有N個(gè)行和M個(gè)列,所述L=N*M,每個(gè)列具有K個(gè)子列,所述N≥2,所述M≥2,所述K≥1,所述B≥1,所述N個(gè)行的每個(gè)行都是可尋址的,所述K個(gè)子列的每個(gè)子列都是可尋址的,所述處理器不重復(fù)存儲(chǔ)所述L個(gè)數(shù)據(jù)元素。
本發(fā)明提供了一種處理器,這種處理器包括M個(gè)獨(dú)立的向量寄存器堆,所述M個(gè)向量寄存器堆一起用來(lái)存儲(chǔ)一個(gè)具有L個(gè)數(shù)據(jù)元素的矩陣,每個(gè)數(shù)據(jù)元素具有B個(gè)二進(jìn)制位,所述矩陣具有N個(gè)行和M個(gè)列,所述L=N*M,每個(gè)列具有K個(gè)子列,所述N≥2,所述M≥2,所述K≥1,所述B≥1,所述N個(gè)行的每個(gè)行都是可尋址的,所述K個(gè)子列的每個(gè)子列都是可尋址的,所述矩陣包括一系列數(shù)組,每個(gè)數(shù)組是所述矩陣的一個(gè)行或子列,所述處理器可以執(zhí)行一個(gè)對(duì)所述一系列數(shù)組中的第一數(shù)組進(jìn)行一個(gè)操作的指令,所述操作是相對(duì)所述第一數(shù)組中的各個(gè)數(shù)據(jù)元素有選擇地進(jìn)行的。
本發(fā)明提供了一種處理矩陣數(shù)據(jù)的方法,這種方法包括提供一個(gè)處理器;在所述處理器內(nèi)提供M個(gè)獨(dú)立的向量寄存器堆,所述M個(gè)向量寄存器堆一起用來(lái)存儲(chǔ)一個(gè)具有L個(gè)數(shù)據(jù)元素的矩陣,每個(gè)數(shù)據(jù)元素具有B個(gè)二進(jìn)制位,所述矩陣具有N個(gè)行和M個(gè)列,所述L=N*M,每個(gè)列具有K個(gè)子列,所述N≥2,所述M≥2,所述K≥1,所述B≥1,所述N個(gè)行的每個(gè)行都是可尋址的,所述K個(gè)子列的每個(gè)子列都是可尋址的,所述矩陣包括一系列數(shù)組,每個(gè)數(shù)組是所述矩陣的一個(gè)行或子列;以及由所述處理器執(zhí)行一個(gè)指令,所述指令對(duì)所述一系列數(shù)組中的第一數(shù)組進(jìn)行一個(gè)操作,所述操作是相對(duì)所述第一數(shù)組中的各個(gè)數(shù)據(jù)元素有選擇地進(jìn)行的。
本發(fā)明有益地提供了一種用于對(duì)SIMD向量處理中所用的矩陣的行和列進(jìn)行尋址的高效率處理器和方法。


圖1示出了按照本發(fā)明的實(shí)施例的數(shù)據(jù)元素矩陣的一種布局。
圖2示出了按照本發(fā)明的實(shí)施例存儲(chǔ)圖1的矩陣的各個(gè)數(shù)據(jù)元素的物理布局,和用于將各個(gè)數(shù)據(jù)元素讀入圖1的矩陣的多路轉(zhuǎn)換器。
圖3示出了按照本發(fā)明的實(shí)施例將各個(gè)數(shù)據(jù)元素從圖2的物理布局讀入圖1的行和子列的讀出邏輯表。
圖4示出了按照本發(fā)明的實(shí)施例用于存儲(chǔ)圖1的矩陣的各個(gè)數(shù)據(jù)元素的圖2的物理布局,以及將圖1的矩陣的數(shù)據(jù)元素寫(xiě)入該物理布局的多路轉(zhuǎn)換器。
圖5示出了按照本發(fā)明的實(shí)施例將數(shù)據(jù)元素從圖1的矩陣的行和子列寫(xiě)入圖4的物理布局的寫(xiě)入邏輯表。
圖6A-6C示出了一些指令,它們按照本發(fā)明的實(shí)施例使用圖2或圖4的多路轉(zhuǎn)換器對(duì)于圖1的矩陣10的行或子列有選擇地執(zhí)行操作。
圖7示出了按照本發(fā)明的實(shí)施例的一種計(jì)算機(jī)系統(tǒng),其具有一個(gè)對(duì)向量處理中所用的矩陣的行和子列進(jìn)行尋址的處理器。
具體實(shí)施例方式
圖1示出了按照本發(fā)明的實(shí)施例的由一系列數(shù)據(jù)元素組成的矩陣10的布局。矩陣10包括128個(gè)行(標(biāo)記為行0,1,...,127)和4個(gè)列(標(biāo)記為列0,1,2,3)。行0,1,...,127分別編址為寄存器R0,R1,...,R127(即,寄存器Rn,n=0,1,...,127)。這些列分別分成如下一些子列列0分成子列128,132,...,252;列1分成子列129,133,...,253;列2分成子列130,134,...,254;以及列3分成子列131,135,...,255。
子列128,129,...,255分別編址為寄存器R128,R129,...,R255(即,寄存器Rn,n=128,129,...,255)。
圖1還示出了矩陣10的各個(gè)數(shù)據(jù)元素。每個(gè)數(shù)據(jù)元素包括B個(gè)二進(jìn)制位(例如,B=32)。矩陣10的數(shù)據(jù)元素具有形式Rn[m],其中n為行標(biāo)(n=0,1,...,127),而m為列標(biāo)(m=0,1,2,3)。例如,R5[2]代表的是矩陣10的一個(gè)處在行5、列2的數(shù)據(jù)元素。如圖1所示寄存器R0含有行0(即,數(shù)據(jù)元素R0
,R0[1],R0[2],R0[3]);寄存器R1含有行1(即,數(shù)據(jù)元素R1
,R1[1],R1[2],R1[3]);…寄存器R127含有行127(即,數(shù)據(jù)元素R127
,R127[1],R127[2],R127[3]);寄存器R128含有子列0(即,數(shù)據(jù)元素R0
,R1
,R2
,R3
);寄存器R129含有子列1(即,數(shù)據(jù)元素R0[1],R1[1],R2[1]R3[1]);…寄存器255含有子列128(即,數(shù)據(jù)元素R0[128],R1[128],R2[128],R3[128])。
移動(dòng)和重組圖1的矩陣10的數(shù)據(jù)的指令由一個(gè)處理器處理,其中這個(gè)處理器包括向量寄存器堆,用于訪問(wèn)所述的向量寄存器堆的地址寄存器,以及多路轉(zhuǎn)換器。因此,圖2示出了一個(gè)處理器15,按照本發(fā)明的實(shí)施例,它包括向量寄存器堆(V0,V1,V2,V3),地址寄存器(A0,A1,A2,A3),以及4:1多路轉(zhuǎn)換器(m0,m1,m2,m3)。在圖2中,向量寄存器堆在地址寄存器和多路轉(zhuǎn)換器的配合下使用,以便從向量寄存器堆中讀出圖1的矩陣10的行或子列。每個(gè)向量寄存器堆包括128個(gè)寄存器。所述向量寄存器堆的數(shù)目(4)與圖1的矩陣10的列的數(shù)目(4)相等。向量寄存器堆Vj(j=0,1,2,3)包括寄存器Yi[j],i=0,1,...,127(即,Y0[j],Y1[j],...,Y127[j])。例如,向量寄存器堆V3(即j=3)包括寄存器Y0[3],Y1[3],...,Y127[3]。每個(gè)向量寄存器堆V0,V1,V2,V3(及其中的128個(gè)寄存器)可分別通過(guò)地址寄存器A0,A1,A2,A3獨(dú)立尋址。概括地說(shuō),地址寄存器Aj(j=0,1,2,3)對(duì)向量寄存器堆Vj的寄存器Yi[j]尋址,如果Aj含有i(i=0,1,...,127)的話。例如,如果地址寄存器A2含有整數(shù)4,則地址寄存器A2對(duì)向量寄存器堆V2的寄存器Y4[2]尋址。
如圖2所示,圖1的矩陣10的數(shù)據(jù)元素Rn[m]存儲(chǔ)和分布在向量寄存器堆V0,V1,V2,V3內(nèi)。圖2中,如下面將結(jié)合圖3所說(shuō)明的那樣,數(shù)據(jù)數(shù)組元素Rn[m]在向量寄存器堆V0,V1,V2,V3的寄存器內(nèi)的這種分布便于為向量讀取操作對(duì)圖1的矩陣10的行和子列進(jìn)行尋址。由圖2可見(jiàn),圖1的矩陣10按照以下兩個(gè)規(guī)則存儲(chǔ)在向量寄存器堆V0,V1,V2,V3內(nèi)。
第一規(guī)則與將矩陣10的行存入向量寄存器堆有關(guān)。第一規(guī)則如下如果將數(shù)據(jù)元素Rn[m]存儲(chǔ)在寄存器Yn[j]內(nèi),則將數(shù)據(jù)元素R(n)[m1]存儲(chǔ)在寄存器Y(n)[j1]內(nèi),其中j1=(j+1)mod 4(即,j=0,1,2,3分別映射為j1=1,2,3,0),而m1=(m+1)mod 4(即,m=0,1,2,3分別映射為m1=1,2,3,0)。運(yùn)算符“mod”為如下定義的取模運(yùn)算符。如果I1和I2都是正整數(shù),則I1 mod I2為I1除以I2后所得的余數(shù)。作為第一規(guī)則的一個(gè)例子,與寄存器R0關(guān)聯(lián)的行的數(shù)據(jù)元素R0
,R0[1],R0[2],R0[3]分別存儲(chǔ)在寄存器Y0
,Y0[1],Y0[2],Y0[3]內(nèi),而與寄存器R1關(guān)聯(lián)的行的數(shù)據(jù)元素R1
,R1[1],R1[2],R1[3]分別存儲(chǔ)在寄存器Y1[1],Y1[2],Y1[3],Y1
內(nèi)。由于第一規(guī)則,行n的數(shù)據(jù)元素Rn
,Rn[1],Rn[2],Rn[3]分別存儲(chǔ)在不同的向量寄存器堆內(nèi),但它們存儲(chǔ)在各自的向量寄存器堆內(nèi)相同的相對(duì)寄存器位置處(即,對(duì)于寄存器Yi[j],有i=n)。因此,與寄存器Rn關(guān)聯(lián)的行的數(shù)據(jù)元素Rn
,Rn[1],Rn[2],Rn[3]作為它的一個(gè)置換序列(permuted sequence)存儲(chǔ)在圖2的寄存器Yn
,Yn[1],Yn[2],Yn[3]內(nèi)。
第二規(guī)則與將矩陣10的子列存入向量寄存器堆有關(guān)。如果將數(shù)據(jù)元素Rn[m]存儲(chǔ)在寄存器Yn[j]內(nèi),則將數(shù)據(jù)元素R(n+1)[m]存儲(chǔ)在寄存器Y(n+1)[j1]內(nèi),其中j1=(j+1)mod 4。作為第二規(guī)則的一個(gè)例子,寄存器R129所指向的子列的數(shù)據(jù)元素R0[1],R1[1],R2[1],R3[1]分別存儲(chǔ)在寄存器Y0[1],Y1[2],Y2[3],Y3
內(nèi)。由于所述第二規(guī)則,行n的數(shù)據(jù)元素Rn
,Rn[1],Rn[2],Rn[3]分別存儲(chǔ)在不同的向量寄存器堆內(nèi),并存儲(chǔ)在各自的向量寄存器堆內(nèi)不同的相對(duì)向量寄存器位置處(由寄存器Yi[j]的索引i表征)。因此,每個(gè)子列的數(shù)據(jù)元素以間斷對(duì)角線方式存儲(chǔ)在向量寄存器堆V0,V1,V2,V3的寄存器內(nèi)。
圖2中的多路轉(zhuǎn)換器m0,m1,m2,m3與向量寄存器堆V0,V1,V2,V3和多路轉(zhuǎn)換器m0,m1,m2,m3之間的邏輯互連17相配合,順序地安排從向量寄存器堆V0,V1,V2,V3讀出數(shù)據(jù)元素。如下面所描述的,邏輯互連17示于圖3的讀出邏輯表20。
圖3示出了按照本發(fā)明的實(shí)施例,利用圖2中的多路轉(zhuǎn)換器m0,m1,m2,m3從向量寄存器堆V0,V1,V2,V3讀出圖1的矩陣10的行和子列的讀出邏輯表20。在圖3中,讀出邏輯表20的列21列出了圖1中的寄存器R0,R1,...,R255。讀出邏輯表20的列22-25列出了地址寄存器A0,A1,A2,A3的值。讀出邏輯表20的列26-29列出了多路轉(zhuǎn)換器m0,m1,m2,m3的值。每個(gè)所述多路轉(zhuǎn)換器(m0,m1,m2,m3)是一組兩個(gè)分別由二進(jìn)制位1或0表示“接通”或“斷開(kāi)”的雙態(tài)開(kāi)關(guān)。因此,多路轉(zhuǎn)換器的“值”是分別表示兩個(gè)開(kāi)關(guān)的接通/斷開(kāi)狀態(tài)的兩個(gè)二進(jìn)制位的組合值(0,1,2,或3)。
矩陣10的將被讀出的每個(gè)行由索引n標(biāo)識(shí),該索引在范圍0≤n≤127內(nèi)選擇一個(gè)寄存器Rn。矩陣10將被讀出的每個(gè)子列由索引n標(biāo)識(shí),該索引在范圍128≤n≤255內(nèi)選擇一個(gè)寄存器Rn。從向量寄存器堆V0,V1,V2,V3的寄存器Yi[j]中訪問(wèn)將被讀出的每個(gè)行或子列的數(shù)據(jù)元素,地址寄存器A0,A1,A2,A3分別指向所述的各個(gè)寄存器Yi[j]。按照多路轉(zhuǎn)換器m0,m1,m2,m3的值順序地如下安排從地址寄存器A0,A1,A2,A3所指向的寄存器中訪問(wèn)數(shù)據(jù)元素。多路轉(zhuǎn)換器值是索引j,它選擇一個(gè)向量寄存器堆(V0,V1,V2,或V3)。與所選向量寄存器堆相關(guān)聯(lián)的地址寄存器的內(nèi)容則用于選擇數(shù)據(jù)元素?;叵肟芍?,Yi[j]代表向量寄存器堆Vj的寄存器i。如果要被讀出的一個(gè)行或子列由寄存器Rn標(biāo)識(shí),則從寄存器Yi[j]中按Y(a0)[m0]、Y(a1)[m1]、Y(a2)[m2]和Y(a3)[m3]的順序次序訪問(wèn)數(shù)據(jù)元素,其中,a0,a1,a2,a3分別表示A(m0),A(m1),A(m2),A(m3)的內(nèi)容。例如,如果A0=2,A1=3,A2=0,A3=1,并且m0=3,m1=2,m2=1,m3=0,則a0=1(即,A(m0)或A3的內(nèi)容),a1=0(即,A(m1)或A2的內(nèi)容),a2=3(即,A(m2)或A1的內(nèi)容),以及a3=2(即,A(m3)或A0的內(nèi)容)。
作為讀出一行的一個(gè)例子,假設(shè)要讀出的行與寄存器R2相關(guān)聯(lián)(見(jiàn)圖1)。于是從圖3的R2行可得A0=2,A1=2,A2=2,A3=2,并且m0=2,m1=3,m2=0 m3=1。從寄存器Ri[j]按m0,m1,m2,m3的值分別指定的Y(a0)[2],Y(a1)[3],Y(a2)
,Y(a3)[1]順序次序訪問(wèn)數(shù)據(jù)元素。利用A0,A1,A2,A3和m0,m1,m2 m3的值,可得a0=2,a1=2,a2=2,a3=2。因此,從寄存器Ri[j]內(nèi)按Y2[2],Y2[3],Y2
,Y2[1]的順序次序訪問(wèn)數(shù)據(jù)元素。因此,參考圖2中Yi[j]的內(nèi)容,按R2
,R2[1],R2[2],R2[3]的順序次序訪問(wèn)數(shù)據(jù)元素,可以從圖1中得到驗(yàn)證,這是與寄存器R2相關(guān)聯(lián)的行的各個(gè)數(shù)據(jù)元素的正確次序。
作為讀出一個(gè)子列的一個(gè)例子,假設(shè)要被讀出的子列與寄存器R129相關(guān)聯(lián)(見(jiàn)圖1)。于是從圖3的R129行可得A0=3,A1=0,A2=1,A3=2,并且m0=1,m1=2,m2=3,m3=0。因此,從寄存器Y[j]按如m0,m1,m2,m3的值分別指定的Y(a0)[1],Y(a1)[2],Y(a2)[3],Y(a3)
的順序次序訪問(wèn)數(shù)據(jù)元素。利用A0,A1,A2,A3和m0,m1,m2,m3的值,可得a0=0,a1=1,a2=2,a3=3。因此,從寄存器Ri[j]內(nèi)按Y0[1],Y1[2],Y2[3],Y3
的順序次序訪問(wèn)數(shù)據(jù)元素。因此,參考圖2中Yi[j]的內(nèi)容,按R0[1],R1[1],R2[1],R3[1]的順序次序訪問(wèn)數(shù)據(jù)元素,可以從圖1中得以驗(yàn)證,這是與寄存器R129相關(guān)聯(lián)的子列的數(shù)據(jù)元素的正確次序。
以上這些例子示例了如何利用多路轉(zhuǎn)換器m0,m1,m2,m3,順序地訪問(wèn)數(shù)據(jù)元素,從而正確地讀出圖1的矩陣10的一個(gè)行或子列,對(duì)于數(shù)據(jù)元素在向量寄存器堆的寄存器內(nèi)的存儲(chǔ)應(yīng)遵從以下一般規(guī)則。每個(gè)子列的數(shù)據(jù)元素存儲(chǔ)在不同的向量寄存器堆內(nèi),這意味著,對(duì)于每個(gè)子列其中沒(méi)有兩個(gè)數(shù)據(jù)元素存儲(chǔ)在同一個(gè)向量寄存器堆內(nèi)。類(lèi)似,每個(gè)行的數(shù)據(jù)元素存儲(chǔ)在不同的向量寄存器堆內(nèi),這意味著,對(duì)于每個(gè)行其中沒(méi)有兩個(gè)數(shù)據(jù)元素存儲(chǔ)在同一個(gè)向量寄存器堆內(nèi)。雖然圖2示出了數(shù)據(jù)數(shù)組元素Rn[m]在向量寄存器堆V0,V1,V2,V3的寄存器Yi[j]內(nèi)的一種特定分布,但數(shù)據(jù)數(shù)組元素Rn[m]的遵從以上一般規(guī)則的其他分布也在本發(fā)明的專(zhuān)利保護(hù)范圍內(nèi)。讀取行或子列的讀出邏輯表(例如,見(jiàn)圖3)是專(zhuān)用于數(shù)據(jù)數(shù)組元素Rn[m]在寄存器Yi[j]內(nèi)的特定分布的。
因此,多路轉(zhuǎn)換器m0、m1、m2和m3響應(yīng)讀矩陣中的一個(gè)行(或子列)的命令,按照如圖3的讀出邏輯表所例示的讀行(或讀列)映射算法將這個(gè)行(或子列)的數(shù)據(jù)元素從向量寄存器堆V0、V1、V2和V3映射為這個(gè)行(或子列)?;蛘撸部梢杂貌紶栠壿嬚Z(yǔ)句實(shí)現(xiàn)讀行(或讀列)映射算法,而不用具有數(shù)字值的讀出邏輯表20。
上面所說(shuō)明的圖2涉及按照?qǐng)D3的讀出邏輯表20從寄存器Yi[j]讀出圖1的矩陣10中的一個(gè)行或子列。如下面要說(shuō)明的那樣,圖4涉及按照?qǐng)D5的寫(xiě)入邏輯表40將圖1的矩陣10中的一個(gè)行或子列寫(xiě)入寄存器Yi[j]。
圖4示出了按照本發(fā)明的實(shí)施例的一個(gè)處理器15,,它包括向量寄存器堆(V0,V1,V4,V3),地址寄存器(A0,A1,A4,A3),以及4:1多路轉(zhuǎn)換器(m0,m1,m4,m3)。在圖4中,向量寄存器堆與地址寄存器和多路轉(zhuǎn)換器結(jié)合在一起使用,以便將圖1的矩陣10的行或子列寫(xiě)入向量寄存器堆V0,V1,V2,V3。向量寄存器堆(V0,V1,V2,V3)、地址寄存器(A0,A1,A2,A3)和圖1的矩陣10的數(shù)據(jù)元素Rn[m]在向量寄存器堆的寄存器Yi[j]內(nèi)的分布與上面所說(shuō)明的圖2中的相同。在圖4中,如下面將結(jié)合圖5所說(shuō)明的那樣,數(shù)據(jù)數(shù)組元素Rn[m]在向量寄存器堆V0,V1,V2,V3的寄存器內(nèi)的這種分布便于為向量寫(xiě)操作對(duì)圖1的矩陣10的行和子列進(jìn)行尋址。
圖4中的多路轉(zhuǎn)換器m0,m1,m2,m3與向量寄存器堆V0,V1,V2,V3和多路轉(zhuǎn)換器m0,m1,m2,m3之間的邏輯互連18結(jié)合在一起順序地安排要寫(xiě)入向量寄存器堆V0,V1,V4,V3的數(shù)據(jù)元素。如下面所述,邏輯互連18描述于圖5的寫(xiě)入邏輯表40。
圖5示出了按照本發(fā)明的實(shí)施例利用圖2中的多路轉(zhuǎn)換器m0,m1,m2,m3將圖1的矩陣10的行和子列寫(xiě)入向量寄存器堆V0,V1,V2,V3的寫(xiě)入邏輯表40。在圖5中,寫(xiě)入邏輯表40的列41列出了圖1的寄存器R0,R1,...,R255。寫(xiě)入邏輯表40的列42-45列出了地址寄存器A0,A1,A2,A3的值。寫(xiě)入邏輯表40的列46-49列出了多路轉(zhuǎn)換器m0,m1,m2,m3的值。矩陣10將被寫(xiě)入的每個(gè)行由索引n標(biāo)識(shí),它在0≤n≤127范圍內(nèi)選擇一個(gè)寄存器Rn。矩陣10將被寫(xiě)入的每個(gè)子列由索引n標(biāo)識(shí),它在128≤n≤255范圍內(nèi)選擇一個(gè)寄存器Rn。
將被寫(xiě)入的每個(gè)行或子列的數(shù)據(jù)元素,如由寄存器Rn(n=0,1,...,255)所選擇的那樣,按照以下規(guī)則分布在向量寄存器堆V0,V1,V2,V3的寄存器Yi[j]中?;叵肟芍?,Yi[j]表示向量寄存器堆Vj的寄存器i。設(shè)與寄存器Rn(如圖1中所示)關(guān)聯(lián)的順序安排的數(shù)據(jù)元素表示為Rn
,Rn[1],Rn[2],Rn[3]。這個(gè)規(guī)則為,將數(shù)據(jù)元素Rn
,Rn[1],Rn[2],Rn[3]分別寫(xiě)入向量寄存器堆V(j0),V(j1),V(j2),V(j3),其中多路轉(zhuǎn)換器m(j0),m(j1),m(j2),m(j3)分別含有0,1,2,3。作為一個(gè)例子,如果m0=1,m1=2,m2=3,m3=0,則Rn
,Rn[1],Rn[2],Rn[3]分別寫(xiě)入向量寄存器堆V3,V0,V1,V2,這反映出m3=0,m0=1,m1=2,m2=3。地址寄存器A0,A1,A2,A3分別含有向量寄存器堆V0,V1,V2,V3內(nèi)的寄存器號(hào),數(shù)據(jù)元素被寫(xiě)入其內(nèi)。因此在前面這個(gè)例子中,如果地址寄存器A3含有值34的話,數(shù)據(jù)元素Rn
寫(xiě)入向量寄存器堆V3的寄存器34。
作為一個(gè)寫(xiě)入一行的例子,假設(shè)將被寫(xiě)入的行與寄存器R2相關(guān)聯(lián)(見(jiàn)圖1)。從圖1的R2行可見(jiàn),與R2相關(guān)聯(lián)的數(shù)據(jù)元素序列為R2
,R2[1],R2[2],R2[3]。從圖4的R2行可見(jiàn),A0=2,A1=2,A2=2,A3=2,并且m0=2,m1=3,m2=0,m3=1。因此,按照前面的規(guī)則,與寄存器R2相關(guān)聯(lián)的數(shù)據(jù)元素序列R2
,R2[1],R2[2],R2[3]分布在向量寄存器堆V2,V3,V0,V1中,這反映出m2=0,m3=1,m0=2,m1=3。因此,數(shù)據(jù)元素R2
寫(xiě)入向量寄存器堆V2的寄存器位置2(即,Y2[2]),因?yàn)榘凑請(qǐng)D4,A2=2。數(shù)據(jù)元素R2[1]寫(xiě)入向量寄存器堆V3的寄存器位置2(即,Y2[3]),因?yàn)榘凑請(qǐng)D4,A3=2。數(shù)據(jù)元素R2[2]寫(xiě)入向量寄存器堆V0的寄存器位置2(即,Y2
),因?yàn)榘凑請(qǐng)D4,A0=2。數(shù)據(jù)元素R2[3]寫(xiě)入向量寄存器堆V1的寄存器位置2(即,Y2[1]),因?yàn)榘凑請(qǐng)D4,A1=2。
作為一個(gè)寫(xiě)入一子列的例子,假設(shè)將被寫(xiě)入的子列與寄存器R129相關(guān)聯(lián)(見(jiàn)圖1)。從圖1的R129子列可見(jiàn),與R129相關(guān)聯(lián)的數(shù)據(jù)元素序列為R0[1],R1[1],R2[1],R3[1]。從圖4的R129行可見(jiàn),A0=3,A1=0,A2=1,A3=2,并且m0=3,m1=0,m2=1,m3=2。因此,按照前面的規(guī)則,與寄存器R129相關(guān)聯(lián)的數(shù)據(jù)元素序列R0[1],R1[1],R2[1],R3[1]分布在向量寄存器堆V1,V2,V3,V0中,這反映出m1=0,m2=1,m3=2,m0=3。因此,數(shù)據(jù)元素R0[1]寫(xiě)入向量寄存器堆V1的寄存器位置0(即,Y0[1]),因?yàn)榘凑請(qǐng)D4,A1=0。數(shù)據(jù)元素R1[1]寫(xiě)入向量寄存器堆V2的寄存器位置1(即,Y1[2]),因?yàn)榘凑請(qǐng)D4,A2=1。數(shù)據(jù)元素R2[1]寫(xiě)入向量寄存器堆V3的寄存器位置2(即,Y2[3]),因?yàn)榘凑請(qǐng)D4,A3=2。數(shù)據(jù)元素R3[1]寫(xiě)入向量寄存器堆V0的寄存器位置3(即,Y3
),因?yàn)榘凑請(qǐng)D4,A0=3。
因此,多路轉(zhuǎn)換器m0,m1,m2,m3響應(yīng)寫(xiě)矩陣中的一個(gè)行(或子列)的命令,按照如圖5的寫(xiě)入邏輯表所例示的寫(xiě)行(或?qū)懥?映射算法將這個(gè)行(或子列)的數(shù)據(jù)元素映射到向量寄存器堆V0,V1,V2,V3?;蛘撸部梢杂貌紶栠壿嬚Z(yǔ)句實(shí)現(xiàn)寫(xiě)入行(或?qū)懭肓?映射算法,而不用具有數(shù)字值的寫(xiě)入邏輯表40。
雖然圖1-5中所示的這些實(shí)施例示出了一個(gè)具有128行和4列的矩陣,其中每列分成32個(gè)各有4個(gè)數(shù)據(jù)元素的子列,但本發(fā)明的范圍包括具有N行和M列因此共有L=N*M個(gè)數(shù)據(jù)元素的矩陣。這N行中的每個(gè)行都是可尋址的,而且K個(gè)子列中的每個(gè)子列也是可尋址的。每個(gè)數(shù)據(jù)元素包括B個(gè)二進(jìn)制位。參數(shù)N,M,K,B可以符合以下約束N≥2,M≥2,K≥1,以及B≥1。對(duì)于圖1-5所例示的例子,N=128,M=4,K=32,而B(niǎo)=32。
圖1-5所示的例子示出了以下涉及N,M,K的關(guān)系K*M=N,N modK=0,N mod M=0,N=2P(P為至少為2的正整數(shù)),M=2Q(Q為至少為2的正整數(shù)),每個(gè)列中的每個(gè)子列包括N個(gè)行中的M個(gè)行,每個(gè)子列內(nèi)的總二進(jìn)制位數(shù)和每個(gè)行內(nèi)的總二進(jìn)制位數(shù)等于恒定的二進(jìn)制位數(shù)(對(duì)于圖1-5為128位)。
以上涉及N,M,K的關(guān)系只是例示性的而不是限制性的。下面另一些非限制性的關(guān)系也在本發(fā)明的范圍內(nèi)。第一種可選擇的關(guān)系是一個(gè)給定列中的各子列不具有同樣多的(即,恒定的)數(shù)據(jù)元素。第二種可選擇的關(guān)系是每個(gè)子列內(nèi)的總二進(jìn)制位數(shù)不等于每個(gè)行內(nèi)的總二進(jìn)制位數(shù)。第三種可選擇的關(guān)系是至少兩個(gè)列具有不同的子列數(shù)K。第四種可選擇的關(guān)系是N mod K≠0。第五種可選擇的關(guān)系是沒(méi)有至少為2的正整數(shù)P滿足N=2P。第六種可選擇的關(guān)系是沒(méi)有至少為2的正整數(shù)Q滿足M=2Q。
本發(fā)明的范圍還包括每個(gè)數(shù)據(jù)元素的B個(gè)二進(jìn)制位被配置成表示一個(gè)浮點(diǎn)數(shù)、整數(shù)、位串或字符串這樣的實(shí)施例。
此外,本發(fā)明包括一個(gè)具有多個(gè)向量寄存器堆的處理器。這些向量寄存器堆一起用來(lái)存儲(chǔ)具有L個(gè)數(shù)據(jù)元素的矩陣。注意,這L個(gè)數(shù)據(jù)元素不需要重復(fù)地存儲(chǔ)在處理器內(nèi),因?yàn)槿缟厦娼Y(jié)合圖1-5所述,矩陣的每個(gè)行和子列都是可以通過(guò)結(jié)合處理器內(nèi)的地址寄存器和多路轉(zhuǎn)換器,利用向量寄存器堆可尋址的。
在本發(fā)明的上面結(jié)合圖1-5所例示的實(shí)施例中,每個(gè)子列中的數(shù)據(jù)元素可以分別存儲(chǔ)在不同的向量寄存器堆內(nèi),而且每個(gè)行中的數(shù)據(jù)元素可以分別存儲(chǔ)在不同的向量寄存器堆內(nèi)。此外,每個(gè)子列中的數(shù)據(jù)元素可以分別存儲(chǔ)在不同的向量寄存器堆的不同的相對(duì)寄存器位置內(nèi),而每個(gè)行中的數(shù)據(jù)元素可以分別存儲(chǔ)在不同的向量寄存器堆的相同的相對(duì)寄存器位置內(nèi)。
雖然矩陣10在圖1中示為具有N個(gè)水平方向的行和M個(gè)垂直方向的列,但本發(fā)明的范圍還包括N個(gè)垂直方向的行和M個(gè)水平方向的列。
圖6A-6C示出了一些按照本發(fā)明的實(shí)施例的利用圖2或圖4的多路轉(zhuǎn)換器對(duì)圖1的矩陣10的行或子列內(nèi)的數(shù)據(jù)元素執(zhí)行有選擇的操作的指令。
圖6A示出了將與寄存器RA相關(guān)聯(lián)的一個(gè)數(shù)組R(RA)的數(shù)據(jù)元素拷貝到與寄存器DEST相關(guān)聯(lián)的數(shù)組R(DEST)內(nèi)的數(shù)據(jù)元素位置上的指令。2比特字aa,bb,cc,dd分別與圖2或圖4的多路轉(zhuǎn)換器m0,m1,m2,m3的值相對(duì)應(yīng)。設(shè)數(shù)組R(RA)其中具有數(shù)據(jù)元素R(RA)
,R(RA)[1],R(RA)[2],R(RA)[3]。設(shè)數(shù)組R(DEST)具有數(shù)據(jù)元素R(DEST)
,R(DEST)[1],R(DEST)[2],R(DEST)[3]。圖6A的操作將R(RA)[aa],R(RA)[bb],R(RA)[cc],R(RA)[dd]分別拷貝到R(DEST)
,R(DEST)[1],R(DEST)[2],R(DEST)[3]中。因此,多路轉(zhuǎn)換器的值m0,m1,m2,m3相對(duì)數(shù)組R(RA)的元素有選擇地控制著將數(shù)據(jù)從數(shù)組R(RA)移動(dòng)到數(shù)組R(DEST),為了例示,考慮以下三個(gè)例子。
在與圖6A所示的指令有關(guān)的第一個(gè)例子中,設(shè)aa=0,bb=1,cc=2,dd=3。這是一個(gè)傳統(tǒng)的數(shù)組拷貝操作,其中將元素R(RA)
,R(RA)[1],R(RA)[2],R(RA)[3]分別拷貝到R(DEST)
,R(DEST)[1],R(DEST)[2],R(DEST)[3]。
在與圖6A所示的指令有關(guān)的第二個(gè)例子中,設(shè)aa=0,bb=0,cc=0,dd=0,這導(dǎo)致將R(RA)
拷貝到R(DEST)
,R(DEST)[1],R(DEST)[2],R(DEST)[3]中。這個(gè)操作通常稱(chēng)為“星號(hào)(splat)”操作,支持標(biāo)量-向量運(yùn)算。
在與圖6A所示的指令有關(guān)的第三個(gè)例子中,設(shè)aa=3,bb=2,cc=1,dd=0,這導(dǎo)致將R(RA)[3],R(RA)[2],R(RA)[1],R(RA)
分別拷貝到R(DEST)
,R(DEST)[1],R(DEST)[2],R(DEST)[3]。因此,R(RA)以數(shù)據(jù)元素R(RA)顛倒的次序拷貝到R(DEST)。
以上這些例子只是例示性的。由于aa、bb、cc、dd有256(即,44)種排列,因此圖6的操作包括256個(gè)操作變型。此外,RDEST≠RA和RDEST=RA都是可能的。因此,RDEST=RA的情況有利于按照256個(gè)不同的排列中的任何排列對(duì)R(RA)的數(shù)據(jù)元素進(jìn)行內(nèi)部重新排列。所有這些操作都需要用到多路轉(zhuǎn)換器m0,m1,m2,m3。注意,所有這些操作基本上都是沒(méi)有額外負(fù)擔(dān)的,這是因?yàn)槿缟厦娼Y(jié)合圖1-5所解釋的,必須給出多路轉(zhuǎn)換器m0,m1,m2,m3,以便完成對(duì)圖1中的矩陣10的行和子列的尋址。
圖6B示出了一個(gè)以屏蔽掉R(RA)中的一些所選元素的方式,將與寄存器RA相關(guān)聯(lián)的數(shù)組R(RA)的數(shù)據(jù)元素拷貝到在一個(gè)與寄存器DEST相關(guān)聯(lián)數(shù)組R(DEST)內(nèi)的數(shù)據(jù)元素位置上的指令。即,針對(duì)R(DEST),屏蔽掉(即拷貝)R(RA)中的Q個(gè)元素,而將R(RA)中剩下的4-Q個(gè)元素拷貝給R(DEST),其中0≤Q≤4。設(shè)B0,B1,B2,B3表示這個(gè)操作所需的屏蔽位。如果對(duì)于m=0,1,2,3有Bm=1/0,則R(RA)[m]拷貝/不拷貝給R(DEST)[m]。這通常由一個(gè)讀出-修改-寫(xiě)入序列實(shí)現(xiàn),但是在這里由于使用了各個(gè)向量寄存器堆V0,V1,V2,V3,因此更為方便。
圖6C示出了一個(gè)將一個(gè)與寄存器RA相關(guān)聯(lián)的數(shù)組R(RA)中的單個(gè)數(shù)據(jù)元素用函數(shù)式(按照函數(shù)f)與一個(gè)與寄存器RB相關(guān)聯(lián)的數(shù)組R(RB)合并的指令。操作結(jié)果存儲(chǔ)在一個(gè)與寄存器DEST相關(guān)聯(lián)的數(shù)組R(DEST)內(nèi),而R(RA)[aa]的元素被用來(lái)執(zhí)行函數(shù)f。使用2比特字aa通過(guò)設(shè)置讀多路轉(zhuǎn)換器m0,m1,m2,m3(圖2)選擇與寄存器RA關(guān)聯(lián)的數(shù)組R(RA)中的單個(gè)數(shù)據(jù)元素,使得所有四個(gè)多路轉(zhuǎn)換器都選擇該單個(gè)數(shù)據(jù)元素。例如,函數(shù)f表示“加法”,則將形成下列SUM向量(具有分量SUM
,SUM[1],SUM[2],SUM[3])并存儲(chǔ)在R(DEST)內(nèi)SUM
=R(RA)[aa]+R(RB)
;SUM[1]=R(RA)[aa]+R(RB)[1];SUM[2]=R(RA)[aa]+R(RB)[2];SUM[3]=R(RA)[aa]+R(RB)[3].
同樣,這個(gè)操作基本上是沒(méi)有額外負(fù)擔(dān)的,因?yàn)橐呀?jīng)給出了這些讀多路轉(zhuǎn)換器m0,m1,m2,m3。
除了圖6A-6C所例示的這些操作之外,還可以對(duì)圖1的矩陣10的一個(gè)數(shù)組(即,行或子列)中的數(shù)據(jù)元素有選擇也執(zhí)行許多其他操作。所述選擇由圖2或圖4中的多路轉(zhuǎn)換器m0,m1,m2,m3控制。
圖7示出了按照本發(fā)明的實(shí)施例的具有處理器91的計(jì)算機(jī)系統(tǒng)90,處理器91用來(lái)對(duì)向量處理中所用的矩陣的行和子列進(jìn)行尋址,并且用于執(zhí)行對(duì)矩陣的數(shù)組中的元素有選擇地進(jìn)行操作的指令。計(jì)算機(jī)系統(tǒng)90包括處理器91以及與處理器91連接的輸入裝置92、連接于處理器91的輸出裝置93、以及分別連接于處理器91的儲(chǔ)存裝置94和95。處理器91可以包括圖2和4中的處理器15。輸入裝置92可以是鍵盤(pán)、鼠標(biāo)之類(lèi)。輸出裝置93可以是打印機(jī)、繪圖儀、計(jì)算機(jī)屏幕、磁帶、活動(dòng)硬盤(pán)、軟盤(pán)之類(lèi)。儲(chǔ)存裝置94和95可以是硬盤(pán)、軟盤(pán)、磁帶、諸如光盤(pán)(CD)或數(shù)字光盤(pán)(DVD)之類(lèi)的光存儲(chǔ)器、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、只讀存儲(chǔ)器(ROM)之類(lèi)。存儲(chǔ)裝置95包括計(jì)算機(jī)代碼97。計(jì)算機(jī)代碼97包括一個(gè)算法,其用于在向量處理中使用一個(gè)矩陣的行和子列,并且用于在矩陣數(shù)組上執(zhí)行相對(duì)于數(shù)組的數(shù)據(jù)元素有選擇的操作的指令。處理器91執(zhí)行計(jì)算機(jī)代碼97。存儲(chǔ)裝置94包括輸入數(shù)據(jù)96。輸入數(shù)據(jù)96包括計(jì)算機(jī)代碼97所需的輸入。輸出裝置93顯示計(jì)算機(jī)代碼97的輸出。儲(chǔ)存裝置94和/或95(或者圖7中未示出的一個(gè)或多個(gè)輔助存儲(chǔ)裝置)可以作為計(jì)算機(jī)可以使用的介質(zhì)(或者計(jì)算機(jī)可讀介質(zhì)或程序存儲(chǔ)裝置),其上具有嵌入其中的計(jì)算機(jī)可讀程序代碼和/或具有存儲(chǔ)在其中的其他數(shù)據(jù),其中計(jì)算機(jī)可讀程序代碼包括計(jì)算機(jī)代碼97。通常,計(jì)算機(jī)系統(tǒng)90的計(jì)算機(jī)程序產(chǎn)品(或者說(shuō),制品)可以包括所述計(jì)算機(jī)可用介質(zhì)(或所述程序存儲(chǔ)裝置)。
雖然圖7以特定配置的硬件和軟件給出了計(jì)算機(jī)系統(tǒng)90,但如一般熟悉該技術(shù)領(lǐng)域的人員所知,對(duì)于上面結(jié)合圖7的特定計(jì)算機(jī)系統(tǒng)所述的用途來(lái)說(shuō),可以使用任何硬件和軟件配置。例如,儲(chǔ)存裝置94和95可以是單個(gè)存儲(chǔ)裝置中的兩個(gè)部分,而不是兩個(gè)分開(kāi)的儲(chǔ)存裝置。
雖然上面以例示方式對(duì)本發(fā)明的實(shí)施例作了說(shuō)明,但許多修改和變動(dòng)對(duì)于熟悉該技術(shù)領(lǐng)域的人員來(lái)說(shuō)都是顯而易見(jiàn)的。因此,所附權(quán)利要求書(shū)用來(lái)涵蓋屬于本發(fā)明的精神實(shí)質(zhì)和專(zhuān)利保護(hù)范圍的所有這樣的修改和變動(dòng)。
權(quán)利要求
1.一種處理器,所述處理器包括M個(gè)獨(dú)立的向量寄存器堆,所述M個(gè)向量寄存器堆一起用來(lái)存儲(chǔ)一個(gè)具有L個(gè)數(shù)據(jù)元素的矩陣,每個(gè)數(shù)據(jù)元素具有B個(gè)二進(jìn)制位,所述矩陣具有N個(gè)行和M個(gè)列,所述L=N*M,每個(gè)列具有K個(gè)子列,所述N≥2,所述M≥2,所述K≥1,所述B≥1,所述N個(gè)行的每個(gè)行是可尋址的,所述K個(gè)子列的每個(gè)子列是可尋址的,所述處理器不重復(fù)存儲(chǔ)所述L個(gè)數(shù)據(jù)元素。
2.權(quán)利要求1的處理器,其中所述處理器還包括M個(gè)地址寄存器,其中所述M個(gè)地址寄存器中的每個(gè)地址寄存器與所述M個(gè)向量寄存器堆中的一個(gè)相應(yīng)的向量寄存器堆相關(guān)聯(lián),其中所述M個(gè)向量寄存器堆中的每個(gè)向量寄存器堆包括一個(gè)具有N個(gè)寄存器的陣列,其中所述M個(gè)向量寄存器堆的N*M個(gè)寄存器中的每個(gè)寄存器用于存儲(chǔ)所述L個(gè)數(shù)據(jù)元素中的一個(gè)數(shù)據(jù)元素,并且其中每個(gè)向量寄存器堆可通過(guò)與它相關(guān)聯(lián)的指向所述向量寄存器堆的N個(gè)寄存器中的一個(gè)寄存器的地址寄存器獨(dú)立尋址。
3.權(quán)利要求2的處理器,其中每個(gè)子列中的各個(gè)數(shù)據(jù)元素存儲(chǔ)在不同的向量寄存器堆中,并且其中每個(gè)行中的各個(gè)數(shù)據(jù)元素存儲(chǔ)在不同的向量寄存器堆中。
4.權(quán)利要求3的處理器,其中每個(gè)子列中的各個(gè)數(shù)據(jù)元素存儲(chǔ)在不同的向量寄存器堆的不同的相對(duì)寄存器位置上,其中每個(gè)行中的各個(gè)數(shù)據(jù)元素存儲(chǔ)在不同的向量寄存器堆的相同的相對(duì)寄存器位置上。
5.權(quán)利要求3的處理器,其中所述處理器還包括M個(gè)分別與所述M個(gè)向量寄存器堆連接的多路轉(zhuǎn)換器,并且其中如果所述矩陣存儲(chǔ)在所述M個(gè)向量寄存器堆中,則所述M個(gè)多路轉(zhuǎn)換器響應(yīng)一個(gè)讀所述矩陣的一個(gè)行的命令,按照一個(gè)讀行映射算法將這個(gè)行的各個(gè)數(shù)據(jù)元素從M個(gè)向量寄存器堆映射到所述矩陣的這個(gè)行;以及所述M個(gè)多路轉(zhuǎn)換器響應(yīng)一個(gè)讀所述矩陣的一個(gè)子列的命令,按照一個(gè)讀子列映射算法將這個(gè)子列的各個(gè)數(shù)據(jù)元素從M個(gè)向量寄存器堆讀到所述矩陣的這個(gè)子列。
6.權(quán)利要求3的處理器,所述處理器還包括M個(gè)分別與所述M個(gè)向量寄存器堆連接的多路轉(zhuǎn)換器;其中所述M個(gè)多路轉(zhuǎn)換器響應(yīng)一個(gè)寫(xiě)所述矩陣的一個(gè)行的命令,按照一個(gè)寫(xiě)行映射算法將這個(gè)行的各個(gè)數(shù)據(jù)元素映射到M個(gè)向量寄存器堆;以及其中所述M個(gè)多路轉(zhuǎn)換器響應(yīng)一個(gè)寫(xiě)所述矩陣的一個(gè)子列的命令,按照一個(gè)寫(xiě)子列映射算法將這個(gè)子列的各個(gè)數(shù)據(jù)元素映射到M個(gè)向量寄存器堆。
7.權(quán)利要求2的處理器,其中所述處理器還包括分別連接到所述M個(gè)向量寄存器堆的M個(gè)多路轉(zhuǎn)換器,使得所述M個(gè)多路轉(zhuǎn)換器中的每個(gè)多路轉(zhuǎn)換器具有一個(gè)不同的值。
8.權(quán)利要求1的處理器,其中所述具有L個(gè)數(shù)據(jù)元素的矩陣存儲(chǔ)在所述M個(gè)向量寄存器堆中。
9.一種處理矩陣數(shù)據(jù)的方法,所述方法包括提供一個(gè)處理器;以及在所述處理器內(nèi)提供M個(gè)獨(dú)立的向量寄存器堆,所述M個(gè)向量寄存器堆一起用來(lái)存儲(chǔ)一個(gè)具有L個(gè)數(shù)據(jù)元素的矩陣,每個(gè)數(shù)據(jù)元素具有B個(gè)二進(jìn)制位,所述矩陣具有N個(gè)行和M個(gè)列,所述L=N*M,每個(gè)列具有K個(gè)子列,所述N≥2,所述M≥2,所述K≥1,所述B≥1,所述N個(gè)行的每個(gè)行是可尋址的,所述K個(gè)子列的每個(gè)子列是可尋址的,所述處理器不重復(fù)存儲(chǔ)所述L個(gè)數(shù)據(jù)元素。
10.權(quán)利要求9的方法,所述方法還包括在所述處理器內(nèi)提供M個(gè)地址寄存器,其中所述M個(gè)地址寄存器中的每個(gè)地址寄存器與所述M個(gè)向量寄存器堆中的一個(gè)相應(yīng)的向量寄存器堆相關(guān)聯(lián),其中所述M個(gè)向量寄存器堆中的每個(gè)向量寄存器堆包括一個(gè)具有N個(gè)寄存器的陣列,其中所述M個(gè)向量寄存器堆的N*M個(gè)寄存器中的每個(gè)寄存器可以存儲(chǔ)所述L個(gè)數(shù)據(jù)元素中的一個(gè)數(shù)據(jù)元素,并且其中每個(gè)向量寄存器堆可通過(guò)與它相關(guān)聯(lián)的指向所述向量寄存器堆的N個(gè)寄存器中的一個(gè)寄存器的地址寄存器獨(dú)立尋址。
11.權(quán)利要求10的方法,其中每個(gè)子列中的各個(gè)數(shù)據(jù)元素存儲(chǔ)在不同的向量寄存器堆中,并且其中每個(gè)行中的各個(gè)數(shù)據(jù)元素存儲(chǔ)在不同的向量寄存器堆中。
12.權(quán)利要求11的方法,其中每個(gè)子列中的各個(gè)數(shù)據(jù)元素存儲(chǔ)在不同的向量寄存器堆的不同的相對(duì)寄存器位置上,其中每個(gè)行中的各個(gè)數(shù)據(jù)元素存儲(chǔ)在不同的向量寄存器堆的相同的相對(duì)寄存器位置上。
13.權(quán)利要求11的方法,所述方法還包括提供M個(gè)分別與所述M個(gè)向量寄存器堆連接的多路轉(zhuǎn)換器,其中如果所述矩陣存儲(chǔ)在所述M個(gè)向量寄存器堆中,則所述M個(gè)多路轉(zhuǎn)換器響應(yīng)一個(gè)讀所述矩陣的一個(gè)行的命令,按照一個(gè)讀行映射算法將這個(gè)行的各個(gè)數(shù)據(jù)元素從M個(gè)向量寄存器堆映射到所述矩陣的這個(gè)行;以及所述M個(gè)多路轉(zhuǎn)換器響應(yīng)一個(gè)讀所述矩陣的一個(gè)子列的命令,按照一個(gè)讀子列映射算法將這個(gè)子列的各個(gè)數(shù)據(jù)元素從M個(gè)向量寄存器堆讀到所述矩陣的這個(gè)子列。
14.權(quán)利要求11的方法,所述方法還包括提供M個(gè)分別與所述M個(gè)向量寄存器堆連接的多路轉(zhuǎn)換器,其中所述M個(gè)多路轉(zhuǎn)換器響應(yīng)一個(gè)寫(xiě)所述矩陣的一個(gè)行的命令,按照一個(gè)寫(xiě)行映射算法將這個(gè)行的各個(gè)數(shù)據(jù)元素映射到M個(gè)向量寄存器堆;以及其中所述M個(gè)多路轉(zhuǎn)換器響應(yīng)一個(gè)寫(xiě)所述矩陣的一個(gè)子列的命令,按照一個(gè)寫(xiě)子列映射算法將這個(gè)子列的各個(gè)數(shù)據(jù)元素映射到M個(gè)向量寄存器堆。
15.權(quán)利要求10的方法,所述方法還包括提供M個(gè)分別與所述M個(gè)向量寄存器堆連接的多路轉(zhuǎn)換器,使得所述M個(gè)多路轉(zhuǎn)換器中的每個(gè)多路轉(zhuǎn)換器具有一個(gè)不同的值。
16.權(quán)利要求9的方法,所述方法還包括對(duì)所述N個(gè)行中的一個(gè)行進(jìn)行尋址。
17.權(quán)利要求9的方法,所述方法還包括對(duì)所述K*M個(gè)子列中的一個(gè)子列進(jìn)行尋址。
18.一種處理器,所述處理器包括M個(gè)獨(dú)立的向量寄存器堆,所述M個(gè)向量寄存器堆一起用來(lái)存儲(chǔ)一個(gè)具有L個(gè)數(shù)據(jù)元素的矩陣,每個(gè)數(shù)據(jù)元素具有B個(gè)二進(jìn)制位,所述矩陣具有N個(gè)行和M個(gè)列,所述L=N*M,每個(gè)列具有K個(gè)子列,所述N≥2,所述M≥2,所述K≥1,所述B≥1,所述N個(gè)行的每個(gè)行是可尋址的,所述K個(gè)子列的每個(gè)子列是可尋址的,所述矩陣包括一系列數(shù)組,每個(gè)數(shù)組是所述矩陣的一個(gè)行或子列,所述處理器可以執(zhí)行一個(gè)對(duì)所述一系列數(shù)組中的第一數(shù)組進(jìn)行一個(gè)操作的指令,所述操作是相對(duì)所述第一數(shù)組中的各個(gè)數(shù)據(jù)元素有選擇地進(jìn)行的。
19.權(quán)利要求18的處理器,所述處理器還包括M個(gè)分別與所述M個(gè)向量寄存器堆連接的多路轉(zhuǎn)換器,其中與所述M個(gè)多路轉(zhuǎn)換器關(guān)聯(lián)的各個(gè)值控制著所述選擇性。
20.權(quán)利要求18的處理器,所述處理器還包括M個(gè)地址寄存器,其中所述M個(gè)地址寄存器中的每個(gè)地址寄存器與所述M個(gè)向量寄存器堆中的一個(gè)相應(yīng)的向量寄存器堆相關(guān)聯(lián),其中所述M個(gè)向量寄存器堆中的每個(gè)向量寄存器堆包括一個(gè)具有N個(gè)寄存器的陣列,其中所述M個(gè)向量寄存器堆的N*M個(gè)寄存器中的每個(gè)寄存器可以存儲(chǔ)所述L個(gè)數(shù)據(jù)元素中的一個(gè)數(shù)據(jù)元素,并且其中每個(gè)向量寄存器堆可通過(guò)與它相關(guān)聯(lián)的指向所述向量寄存器堆的N個(gè)寄存器中的一個(gè)寄存器的地址寄存器獨(dú)立尋址。
21.權(quán)利要求18的處理器,其中所述指令用來(lái)將所述一系列數(shù)組的所述第一數(shù)組中的至少一個(gè)數(shù)據(jù)元素拷貝給所述一系列數(shù)組的一個(gè)第二數(shù)組,并且其中所述指令并不將所述第一數(shù)組的一個(gè)原樣拷貝插入所述第二數(shù)組。
22.權(quán)利要求18的處理器,其中所述指令用來(lái)在所述第一數(shù)組內(nèi)重新排列所述第一數(shù)組的各個(gè)數(shù)據(jù)元素。
23.權(quán)利要求18的處理器,其中所述處理器不重復(fù)存儲(chǔ)所述L個(gè)數(shù)據(jù)元素。
24.權(quán)利要求18的處理器,其中所述具有L個(gè)數(shù)據(jù)元素的矩陣存儲(chǔ)在所述M個(gè)向量寄存器堆中。
25.一種處理矩陣數(shù)據(jù)的方法,所述方法包括提供一個(gè)處理器;在所述處理器內(nèi)提供M個(gè)獨(dú)立的向量寄存器堆,所述M個(gè)向量寄存器堆一起用來(lái)存儲(chǔ)一個(gè)具有L個(gè)數(shù)據(jù)元素的矩陣,每個(gè)數(shù)據(jù)元素具有B個(gè)二進(jìn)制位,所述矩陣具有N個(gè)行和M個(gè)列,所述L=N*M,每個(gè)列具有K個(gè)子列,所述N≥2,所述M≥2,所述K≥1,所述B≥1,所述N個(gè)行的每個(gè)行是可尋址的,所述K個(gè)子列的每個(gè)子列是可尋址的,所述矩陣包括一系列數(shù)組,每個(gè)數(shù)組是所述矩陣的一個(gè)行或子列;以及由所述處理器執(zhí)行一個(gè)指令,所述指令對(duì)所述一系列數(shù)組中的第一數(shù)組進(jìn)行一個(gè)操作,所述操作是相對(duì)所述第一數(shù)組中的各個(gè)數(shù)據(jù)元素有選擇地進(jìn)行的。
26.權(quán)利要求25的方法,所述方法還包括提供M個(gè)分別與所述M個(gè)向量寄存器堆連接的多路轉(zhuǎn)換器,其中與所述M個(gè)多路轉(zhuǎn)換器關(guān)聯(lián)的各個(gè)值控制著所述的選擇性。
27.權(quán)利要求25的方法,所述方法還包括在所述處理器內(nèi)提供M個(gè)地址寄存器,其中所述M個(gè)地址寄存器中的每個(gè)地址寄存器與所述M個(gè)向量寄存器堆中的一個(gè)相應(yīng)的向量寄存器堆相關(guān)聯(lián),其中所述M個(gè)向量寄存器堆中的每個(gè)向量寄存器堆包括一個(gè)具有N個(gè)寄存器的陣列,其中所述M個(gè)向量寄存器堆的N*M個(gè)寄存器中的每個(gè)寄存器可以存儲(chǔ)所述L個(gè)數(shù)據(jù)元素中的一個(gè)數(shù)據(jù)元素,并且其中每個(gè)向量寄存器堆可通過(guò)與它相關(guān)聯(lián)的指向所述向量寄存器堆的N個(gè)寄存器中的一個(gè)寄存器的地址寄存器獨(dú)立尋址。
28.權(quán)利要求25的方法,其中所述進(jìn)行一個(gè)操作包括將所述一系列數(shù)組的所述第一數(shù)組中的至少一個(gè)數(shù)據(jù)元素拷貝給所述一系列數(shù)組的第二數(shù)組,并且其中所述拷貝并不將所述第一數(shù)組的一個(gè)原樣拷貝插入所述第二數(shù)組。
29.權(quán)利要求25的方法,其中所述進(jìn)行一個(gè)操作包括在所述第一數(shù)組內(nèi)重新排列所述第一數(shù)組的各個(gè)數(shù)據(jù)元素。
30.權(quán)利要求25的方法,其中所述處理器不重復(fù)存儲(chǔ)所述L個(gè)數(shù)據(jù)元素。
全文摘要
本發(fā)明提供了一種處理矩陣數(shù)據(jù)的處理器和方法。這種處理器包括M個(gè)獨(dú)立的向量寄存器堆,可以一起存儲(chǔ)一個(gè)具有L個(gè)數(shù)據(jù)元素的矩陣。每個(gè)數(shù)據(jù)元素具有B個(gè)二進(jìn)制位。這個(gè)矩陣具有N個(gè)行和M個(gè)列,并且L=N*M。每個(gè)列具有K個(gè)子列。N≥2,M≥2,K≥1,以及B≥1。每個(gè)行和每個(gè)子列都是可尋址的。這種處理器不重復(fù)存儲(chǔ)這L個(gè)數(shù)據(jù)元素。矩陣包括一系列數(shù)組,每個(gè)數(shù)組是矩陣的一個(gè)行或子列。處理器可以執(zhí)行一個(gè)對(duì)這些數(shù)組中的第一數(shù)組相對(duì)第一數(shù)組中的各個(gè)數(shù)據(jù)元素有選擇地進(jìn)行一個(gè)操作的指令。
文檔編號(hào)G06F9/34GK1619526SQ200410077858
公開(kāi)日2005年5月25日 申請(qǐng)日期2004年9月15日 優(yōu)先權(quán)日2003年11月18日
發(fā)明者P·A·桑登, R·M·P·韋斯特 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
清水河县| 芒康县| 康马县| 永丰县| 盐津县| 琼结县| 景德镇市| 公主岭市| 湄潭县| 屯门区| 精河县| 木兰县| 博兴县| 彰化市| 庆安县| 安吉县| 宜黄县| 龙游县| 黔东| 淮滨县| 孟州市| 扶风县| 铁岭市| 迁西县| 阳春市| 黑龙江省| 黔西县| 托克逊县| 林州市| 印江| 克拉玛依市| 沈丘县| 且末县| 彭山县| 沅陵县| 水城县| 凤凰县| 普格县| 柳江县| 鹤庆县| 永川市|