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

利用矢量處理器實(shí)現(xiàn)矩陣轉(zhuǎn)置的方法和處理系統(tǒng)的制作方法

文檔序號(hào):6611498閱讀:253來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):利用矢量處理器實(shí)現(xiàn)矩陣轉(zhuǎn)置的方法和處理系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及信號(hào)處理技術(shù)領(lǐng)域,尤其涉及一種利用矢量處理器實(shí)現(xiàn)矩陣轉(zhuǎn)置的方法和一種利用矢量處理器實(shí)現(xiàn)矩陣轉(zhuǎn)置的處理系統(tǒng)。
背景技術(shù)
矩陣轉(zhuǎn)置是多維圖像和信號(hào)處理中常用的處理過(guò)程,在現(xiàn)有技術(shù)中,主要是以每個(gè)矩陣元素為單位,通過(guò)按行依次讀取數(shù)據(jù)(內(nèi)存→寄存器),再按列依次寫(xiě)入數(shù)據(jù)(寄存器→內(nèi)存)來(lái)完成,也就是說(shuō)對(duì)于M×N的矩陣進(jìn)行轉(zhuǎn)置,就需要M×N次數(shù)據(jù)讀操作和M×N次數(shù)據(jù)寫(xiě)操作。
由于內(nèi)存轉(zhuǎn)移到寄存器需要較長(zhǎng)的時(shí)間,因此,現(xiàn)有技術(shù)中矩陣轉(zhuǎn)置所需的M×N次數(shù)據(jù)讀操作和M×N次數(shù)據(jù)寫(xiě)操作方案會(huì)導(dǎo)致較長(zhǎng)的讀/寫(xiě)時(shí)間,矩陣轉(zhuǎn)置速度必然受到影響,從而成為信號(hào)處理過(guò)程中的瓶頸。顯然,如果能夠提高矩陣轉(zhuǎn)置速度,將極大地促進(jìn)信號(hào)處理速度的提高,但目前尚無(wú)能夠有效提高矩陣轉(zhuǎn)置速度的方案。

發(fā)明內(nèi)容
針對(duì)上述現(xiàn)有技術(shù)的缺陷,本發(fā)明提供一種實(shí)現(xiàn)矩陣轉(zhuǎn)置的方案,目的在于提高矩陣轉(zhuǎn)置處理的執(zhí)行速度。
為實(shí)現(xiàn)上述目的,本發(fā)明的實(shí)施例提供了一種利用矢量處理器實(shí)現(xiàn)矩陣轉(zhuǎn)置的方法,包括以下步驟S1、將待轉(zhuǎn)置矩陣棋盤(pán)式劃分為多個(gè)與矢量處理器有效容量匹配的小矩陣;S2、將每一小矩陣的元素以隊(duì)列為單位從內(nèi)存輸入到矢量處理器中;S3、通過(guò)在所述矢量處理器中元素的位移和交換,完成小矩陣轉(zhuǎn)置;S4、將所述矢量處理器中的元素以隊(duì)列為單位輸出到內(nèi)存中,所述輸出地址為根據(jù)轉(zhuǎn)置規(guī)則進(jìn)行變換后的地址;
S5、將全部轉(zhuǎn)置后的小矩陣組合為所述待轉(zhuǎn)置矩陣的轉(zhuǎn)置矩陣。
本發(fā)明的實(shí)施例還提供了一種利用矢量處理器實(shí)現(xiàn)矩陣轉(zhuǎn)置的處理系統(tǒng),包括一內(nèi)存單元,用于保存待轉(zhuǎn)置矩陣和轉(zhuǎn)置后的矩陣;還包括矢量處理器和一轉(zhuǎn)置控制器;所述轉(zhuǎn)置控制器與所述內(nèi)存單元和所述矢量處理器連接,用于指令所述內(nèi)存單元將待轉(zhuǎn)置矩陣棋盤(pán)式劃分為多個(gè)與矢量處理器有效容量匹配的小矩陣;還用于指令所述矢量處理器進(jìn)行與所述內(nèi)存單元的小矩陣元素讀/寫(xiě);所述矢量處理器用于根據(jù)所述轉(zhuǎn)置控制器的指令,進(jìn)行小矩陣元素讀/寫(xiě),通過(guò)元素的位移和交換操作進(jìn)行小矩陣轉(zhuǎn)置,并進(jìn)行輸出地址變換。
由上述技術(shù)方案可知,本發(fā)明通過(guò)分解待轉(zhuǎn)置矩陣,采用矢量處理器進(jìn)行少量的矢量交換、移位操作,具有以下有益效果對(duì)于M×N的矩陣進(jìn)行轉(zhuǎn)置,只需要[M/Y]×N次數(shù)據(jù)讀操作和[M/Y]×N次數(shù)據(jù)寫(xiě)操作(Y為一個(gè)矢量寄存器所包含的元素個(gè)數(shù)),使數(shù)據(jù)在內(nèi)存和寄存器之間的搬移時(shí)間大大減少,有效的提高了矩陣轉(zhuǎn)置的執(zhí)行速度。
下面通過(guò)附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。


圖1為一流程圖,顯示了本發(fā)明所提供的利用矢量處理器實(shí)現(xiàn)矩陣轉(zhuǎn)置的方法一實(shí)施例;圖2為按照?qǐng)D1所示方法,采用多矢量處理器并行實(shí)現(xiàn)矩陣轉(zhuǎn)置的方法示意圖;圖3為按照?qǐng)D1所示方法,采用一矢量處理器串行實(shí)現(xiàn)矩陣轉(zhuǎn)置的方法示意圖;圖4為按照?qǐng)D1所示方法,以2Z×2Z矢量處理器進(jìn)行元素行轉(zhuǎn)移的一個(gè)實(shí)施例流程圖;圖5為按照?qǐng)D1所示方法,以2Z×2Z矢量處理器進(jìn)行元素列轉(zhuǎn)移的一個(gè)實(shí)施例流程圖;圖6A-圖6H為數(shù)據(jù)排列示意圖,顯示了本發(fā)明所提供的利用矢量處理器實(shí)現(xiàn)矩陣轉(zhuǎn)置的方法一具體實(shí)施例;
圖7為一系統(tǒng)框圖,顯示了本發(fā)明所提供的利用矢量處理器實(shí)現(xiàn)矩陣轉(zhuǎn)置的處理系統(tǒng)一實(shí)施例。
具體實(shí)施例方式
為了克服現(xiàn)有技術(shù)中進(jìn)行矩陣轉(zhuǎn)置操作所存在的搬移時(shí)間長(zhǎng)的缺陷,本發(fā)明利用矢量處理器的特點(diǎn),提出一種新的矩陣轉(zhuǎn)置方法。
所謂的矢量處理器,是隨著信號(hào)處理技術(shù)的發(fā)展而出現(xiàn)的一種信號(hào)處理器,用于對(duì)矢量表示的數(shù)據(jù)進(jìn)行存儲(chǔ)、算數(shù)和邏輯操作。一般矢量處理器的結(jié)構(gòu)如下由矢量運(yùn)算單元和若干個(gè)矢量寄存器構(gòu)成,每一個(gè)矢量寄存器包括若干個(gè)元素;其中,同屬一個(gè)矢量寄存器的元素可以進(jìn)行位置交換,兩個(gè)矢量寄存器中相同位置的元素可以進(jìn)行元素交換。基于矢量寄存器位置交換和元素交換的特性,矢量處理器能夠在一定程度上實(shí)現(xiàn)對(duì)矢量數(shù)據(jù)的快速、有效處理。
正因?yàn)槭噶考拇嫫靼ㄈ舾蓚€(gè)元素,因此,可以一次性寫(xiě)入/或者讀出一個(gè)寄存器的元素,基于這一特點(diǎn),本發(fā)明的實(shí)施例提出了一種利用矢量處理器實(shí)現(xiàn)矩陣轉(zhuǎn)置的方法,如圖1所示;同時(shí)圖4和圖5給出了圖1所示方法的兩個(gè)具體實(shí)施例。
圖1所示方法包括以下步驟S1、將待轉(zhuǎn)置矩陣棋盤(pán)式劃分為多個(gè)與矢量處理器有效容量匹配的小矩陣;在本步驟1中,所指的劃分為與矢量處理器有效容量匹配的小矩陣,是指根據(jù)組成矢量處理器的矢量寄存器的大小和數(shù)量,將待轉(zhuǎn)置矩陣劃分成適合矢量處理器的小矩陣,其劃分的原則是使后續(xù)的小矩陣轉(zhuǎn)置操作能在該處理器內(nèi)完成。
需要指出,矢量處理器的有效容量不一定與矢量寄存器所能容納的元素?cái)?shù)目對(duì)應(yīng)。比如,當(dāng)矢量處理器的有效容量是16×16時(shí),其可能由32個(gè)能容納8個(gè)元素的矢量寄存器組成,每?jī)蓚€(gè)矢量寄存器可視為一組,提供對(duì)16個(gè)元素的支持,效果與一個(gè)16位的矢量寄存器相同;這種矢量處理器硬件結(jié)構(gòu)的靈活性,不會(huì)影響到本發(fā)明的技術(shù)效果。
在根據(jù)矢量處理器容量進(jìn)行小矩陣劃分的步驟中,較佳的,是選擇矢量寄存器的一半可以用于寄存一個(gè)小矩陣的所有數(shù)據(jù),即矢量處理器的有效容量為其一半矢量寄存器所能容納的元素,并且在每個(gè)矢量寄存器內(nèi),至多只包含小矩陣一行/一列的元素。
由于在多數(shù)情況下,為了匹配字節(jié)處理的需求,矢量處理器有效容量多為2Z×2Z,因此本發(fā)明主要描述矢量處理器有效容量為2Z×2Z時(shí)的具體處理方案,簡(jiǎn)稱(chēng)2Z×2Z矢量處理器;但本領(lǐng)域普通技術(shù)人員可以理解,2Z×2Z僅為說(shuō)明而非限制,通過(guò)元素交換和位移規(guī)則的變化,本發(fā)明所提供的技術(shù)方案同樣適用于有效容量為3Z×3Z、5Z×5Z……的矢量寄存器。
在2Z×2Z矢量處理器條件下,步驟S1可以包括S1-1、將待轉(zhuǎn)置矩陣棋盤(pán)式劃分為多個(gè)S×T小矩陣,該S、T不大于2Z。
舉例來(lái)說(shuō),當(dāng)待轉(zhuǎn)置矩陣為32×16矩陣,且矢量處理器有效容量為8×8時(shí),可將該待轉(zhuǎn)置矩陣拆分為8個(gè)8×8小矩陣,即S=2Z,T=2Z。而且,上述拆分的結(jié)果并不唯一,只要矢量處理器的空間足以容納拆分后的一個(gè)小矩陣即可,比如,32×16矩陣也可以拆分為16個(gè)4*8小矩陣,由16個(gè)8×8矢量處理器進(jìn)行處理,即S=4<2Z,T=8=2Z。
需要指出,上述劃分后的小矩陣無(wú)需相同,比如,13×14矩陣可以分解為1個(gè)8×8小矩陣,1個(gè)5×8小矩陣,1個(gè)8×6小矩陣以及1個(gè)5×6小矩陣。
上述待轉(zhuǎn)置矩陣拆分方法同樣適用于按列轉(zhuǎn)移小矩陣元素的情況。
S2、將每一小矩陣的元素以隊(duì)列為單位從內(nèi)存輸入到矢量處理器中;在本步驟S2中,可以存在兩種處理情況一種方式是只使用一個(gè)矢量處理器,對(duì)分解后的小矩陣進(jìn)行串行處理,當(dāng)前一個(gè)小矩陣轉(zhuǎn)置完成后,再輸入下一個(gè)小矩陣進(jìn)行轉(zhuǎn)置處理;另一種方式是同時(shí)使用多個(gè)矢量處理器,對(duì)分解后的小矩陣進(jìn)行并行處理,即同時(shí)對(duì)幾個(gè)小矩陣進(jìn)行轉(zhuǎn)置處理。
無(wú)論采取哪一種方式,在2Z×2Z矢量處理器條件下,都可以以隊(duì)列為單位進(jìn)行小矩陣元素轉(zhuǎn)移,在本發(fā)明的實(shí)施例中,分別以行和列為單位進(jìn)行小矩陣元素轉(zhuǎn)移為例加以說(shuō)明。
以行為單位進(jìn)行小矩陣元素轉(zhuǎn)移時(shí),按照以下步驟執(zhí)行S2-1-1、將每一小矩陣條帶式劃分為元素行,每一元素行與所述矢量處理器的一個(gè)或多個(gè)矢量寄存器對(duì)應(yīng);由于矢量處理器的有效容量不一定與矢量寄存器所能容納的元素?cái)?shù)目對(duì)應(yīng),因此,每一元素行有可能對(duì)應(yīng)多個(gè)矢量寄存器;亦即,從構(gòu)成矢量處理器的矢量寄存器的角度而言,其可容置一行元素,也可與其他矢量寄存器一起,容置一行元素。當(dāng)矢量處理器的有效容量為2Z時(shí),如果矢量寄存器所能容納的元素?cái)?shù)目為Y,則共需要X個(gè)矢量寄存器來(lái)支持一行小矩陣元素,該X=2Z/Y。
以對(duì)32×16矩陣進(jìn)行轉(zhuǎn)置為例當(dāng)矢量處理器有效容量為8×8且其每一矢量寄存器能容納8個(gè)元素時(shí),如果待轉(zhuǎn)置矩陣被拆分為8×8小矩陣,則其每一矢量寄存器加載一行8個(gè)元素;如果帶轉(zhuǎn)置矩陣被拆分為16個(gè)8×4小矩陣,則其每一矢量寄存器加載一行4個(gè)元素。
當(dāng)矢量處理器有效容量為16×16且其包括32個(gè)矢量寄存器,每一矢量寄存器容納8個(gè)元素時(shí),可以根據(jù)矢量處理器的有效容量將待轉(zhuǎn)置矩陣劃分為兩個(gè)16×16小矩陣,則小矩陣的每一行需要轉(zhuǎn)移到兩個(gè)矢量寄存器中,每一矢量寄存器保存半行8個(gè)元素。由于保存同一行元素的多個(gè)矢量寄存器,其進(jìn)行位移和交換的處理方式一致,因此,技術(shù)效果與將一行元素轉(zhuǎn)移到一個(gè)矢量寄存器相同。
S2-1-2、逐行將所述小矩陣的元素行寫(xiě)入對(duì)應(yīng)的矢量寄存器,所述矢量處理器未被占用的位置以0元素進(jìn)行填充。
最佳的情況,以8個(gè)8位矢量寄存器構(gòu)成的矢量處理器為例,如果待轉(zhuǎn)置矩陣被分解為8×8小矩陣,則每次寫(xiě)入8個(gè)元素,矢量寄存器得以充分利用,無(wú)需0元素填充;但對(duì)于其他一些情況,比如待轉(zhuǎn)置矩陣分解為4×8小矩陣的情況下,由于僅占用四個(gè)矢量寄存器,為了保證位移和交換的進(jìn)行,必須將另外四個(gè)矢量寄存器用0元素加以填充;又如待轉(zhuǎn)置矩陣分解為8×4小矩陣的情況下,由于每個(gè)矢量寄存器僅利用了4個(gè)元素位置,為了保證位移和交換的進(jìn)行,必須將另外四個(gè)元素位置用0元素加以填充;再比如,如果待轉(zhuǎn)置矩陣被分解為5×7小矩陣,那么必須從行、列兩方面進(jìn)行填充。
總而言之,從小矩陣的角度而言,只要其行數(shù)/列數(shù)不超過(guò)矢量處理器的處理能力即可;從每一執(zhí)行矩陣轉(zhuǎn)置的矢量處理器的角度來(lái)說(shuō),其所轉(zhuǎn)置的矩陣必須滿(mǎn)足行數(shù)與列數(shù)相等,且行數(shù)和列數(shù)完全得以利用的條件。比如,如果采用有效容量為3×3的矢量處理器來(lái)實(shí)現(xiàn)6×5矩陣的轉(zhuǎn)置,就可以將6×5矩陣分解為2個(gè)3×3小矩陣和2個(gè)3×2小矩陣,則進(jìn)行元素轉(zhuǎn)移時(shí),通過(guò)給3×2小矩陣補(bǔ)充1列0元素,就能夠利用4個(gè)3×3矢量處理器實(shí)現(xiàn)轉(zhuǎn)置。再比如,對(duì)于13×14矩陣,通過(guò)給其劃分后的5×8小矩陣、8×6小矩陣以及5×6小矩陣補(bǔ)充0元素,就能夠利用8×8矢量處理器進(jìn)行轉(zhuǎn)置。
需要指出的是,補(bǔ)充0元素的操作也可以在步驟2之前完成,比如采用8×8的矢量處理器來(lái)實(shí)現(xiàn)13×14矩陣的轉(zhuǎn)置,就可以先行補(bǔ)充3行0元素和2列0元素,然后將其分解為4個(gè)8×8小矩陣。具體地拆分和填充情況視待轉(zhuǎn)置矩陣和矢量處理器有效容量而定,只要滿(mǎn)足每一個(gè)矢量處理器得以完全利用即可。
可以看出,通過(guò)步驟S2-1-1至S2-1-2的按行轉(zhuǎn)移的步驟,每一次的從內(nèi)存進(jìn)行讀取操作,都能夠一次性讀取多個(gè)小矩陣元素;最佳的,當(dāng)小矩陣無(wú)需采用0元素進(jìn)行填充時(shí),意味著一次性讀取矢量寄存器元素?cái)?shù)目個(gè)小矩陣元素;則以矢量寄存器中包含Y個(gè)元素來(lái)說(shuō),想將一個(gè)M×N的待轉(zhuǎn)置矩陣全部加載到矢量處理器中,只需要[M/Y]×N次數(shù)據(jù)讀操作。相較于現(xiàn)有技術(shù)中每一次讀取一個(gè)數(shù)據(jù),顯然實(shí)現(xiàn)了內(nèi)存→寄存器的數(shù)據(jù)轉(zhuǎn)移效率的提高。
上述步驟S2-1-1至步驟S2-1-2是按行轉(zhuǎn)移小矩陣元素,如果是按列進(jìn)行轉(zhuǎn)移,則執(zhí)行以下步驟S2-2-1、將每一小矩陣條帶式劃分為元素列,每一元素列與所述矢量處理器的一個(gè)或多個(gè)矢量寄存器對(duì)應(yīng);S2-2-2、逐列將所述小矩陣的元素列寫(xiě)入對(duì)應(yīng)的矢量寄存器,所述矢量處理器未被占用的位置以0元素進(jìn)行填充。
類(lèi)似的,通過(guò)步驟S2上述按列轉(zhuǎn)移的步驟,每一次的從內(nèi)存進(jìn)行讀取操作,也都能夠一次性讀取多個(gè)小矩陣元素;當(dāng)小矩陣沒(méi)有采用0元素進(jìn)行列填充時(shí),意味著一次性讀取小矩陣元素;以矢量寄存器中包含Y個(gè)元素來(lái)說(shuō),想將一個(gè)M×N的待轉(zhuǎn)置矩陣全部加載到矢量處理器中,只需要M×[N/Y]次數(shù)據(jù)讀操作,相較于現(xiàn)有技術(shù)中每一次讀取一個(gè)數(shù)據(jù),同樣實(shí)現(xiàn)了內(nèi)存→寄存器的數(shù)據(jù)轉(zhuǎn)移效率的提高。
本領(lǐng)域普通技術(shù)人員可以理解,本發(fā)明通過(guò)按行轉(zhuǎn)移和按列轉(zhuǎn)移為例,以對(duì)利用矢量寄存器按隊(duì)列轉(zhuǎn)移元素進(jìn)行描述,其僅為舉例而非限制。但需要指出,在一般實(shí)現(xiàn)中,比較優(yōu)選的方式為按行轉(zhuǎn)移。
S3、通過(guò)在所述矢量處理器中元素的位移和交換,完成小矩陣轉(zhuǎn)置;通過(guò)本步驟S3,使小矩陣的轉(zhuǎn)置完全在矢量寄存器中完成,具體為通過(guò)矢量寄存器內(nèi)的元素移位和矢量寄存器間的元素交換完成。
以2Z×2Z矢量處理器進(jìn)行小矩陣行轉(zhuǎn)移為例,包括以下步驟S3-1-1、對(duì)所述矢量處理器中的元素執(zhí)行位置右移操作,包括將保存第M行元素的矢量寄存器中的每一元素依次向右循環(huán)移動(dòng)(M-1)位,其中,保存第M行元素的矢量寄存器可能為X個(gè),X=2Z/Y,Y為矢量寄存器所能容納的元素個(gè)數(shù);具體來(lái)說(shuō),就是保存小矩陣第一行元素的矢量寄存器保持不變,保存矩陣第二行元素的矢量寄存器分別依次向右循環(huán)移動(dòng)一個(gè)元素的位置,保存矩陣第三行元素的矢量寄存器依次向右循環(huán)移動(dòng)兩個(gè)元素的位置,以此類(lèi)推,直到最后一行。
S3-1-2、對(duì)矢量寄存器間元素執(zhí)行位置交換操作,包括當(dāng)(N+1)不大于Z時(shí),對(duì)保存模2(N+1)余n行和模2(N+1)余(n+2N)行元素的矢量寄存器,交換其處于模2(N+1)余(n+2N)、模2(N+1)余(n+1+2N)、……、模2(N+1)余(2(N+1)+n-2)、和模2(N+1)余(2(N+1)+n-1)位置的元素;其中,N取0、1、2、3……矢量寄存器的數(shù)量值,n取1,2,……,(2N-1),2N;本步驟S3-1-2的分解表示如下(I)N=0時(shí),2N=20=1,即n能取且僅能取1;模2(N+1)余n為模2余1,模2(N+1)余(n+2N)為模2余2即模2余0;則保存模2余1行(奇數(shù)行)和模2余0行(偶數(shù)行)元素的矢量寄存器,即序號(hào)差1行(鄰行)的矢量寄存器進(jìn)行元素交換;
就具體的交換位置而言,模2(N+1)余(n+2N)為模2余2(模2余0),模2(N+1)余(2(N+1)+n-1)亦為模2余2(模2余0),與模2(N+1)余(n+2N)重合;顯然,具體的交換位置能取且僅能取模2余0,即偶數(shù)位置。
因此,N=0時(shí),是每一個(gè)奇數(shù)行矢量寄存器和它的下一偶數(shù)行矢量寄存器交換偶數(shù)位置的元素。
(II)N=1時(shí),2N=21=2,即n能取1、2;n取1時(shí),模2(N+1)余n為模4余1,模2(N+1)余(n+2N)為模4余3;n取2時(shí),模2(N+1)余n為模4余2,模2(N+1)余(n+2N)為模4余4即模4余0;即,序號(hào)差2行的矢量寄存器進(jìn)行元素交換。
對(duì)于模4余1行和模4余3行,n=1;就具體的交換位置而言,模2(N+1)余(n+2N)為模4余3,模2(N+1)余(n+1+2N)=模2(N+1)余(2(N+1)+n-1)=模4余4(模4余0),即模4余1行和模4余3行交換模4余3和模4余0位置的元素;對(duì)于模4余2行和模4余0行,n=2;就具體的交換位置而言,模2(N+1)余(n+2N)為模4余4(模4余0),模2(N+1)余(n+1+2N)=模2(N+1)余(2(N+1)+n-1)=模4余5(模4余1),即模4余2行和模4余0行交換模4余0和模4余1位置的元素。
(III)N=2時(shí),2N=22=4,即n能取1、2、3和4;n取1時(shí),模2(N+1)余n為模8余1,模2(N+1)余(n+2N)為模8余5;n取2時(shí),模2(N+1)余n為模8余2,模2(N+1)余(n+2N)為模8余6;n取3時(shí),模2(N+1)余n為模8余3,模2(N+1)余(n+2N)為模8余7;n取4時(shí),模2(N+1)余n為模8余4,模2(N+1)余(n+2N)為模8余8即模8余0;即,序號(hào)差4行的矢量寄存器進(jìn)行元素交換。
對(duì)于模8余1行和模8余5行,n=1;就具體的交換位置而言,模2(N+1)余(n+2N)為模8余5,模2(N+1)余(n+1+2N)=模8余6,模2(N+1)余(n+2+2N)=模8余7,模2(N+1)余(n+3+2N)=模2(N+1)余(2(N+1)+n-1)=模8余8(模8余0);即模8余1行和模8余5行交換模8余5、模8余6、模8余7和模8余0位置的元素;對(duì)于模8余2行和模8余6行,n=2;就具體的交換位置而言,模2(N+1)余(n+2N)為模8余6,模2(N+1)余(n+1+2N)=模8余7,模2(N+1)余(n+2+2N)=模8余8(模8余0),模2(N+1)余(n+3+2N)=模2(N+1)余(2(N+1)+n-1)=模8余9(模8余1);即模8余2行和模8余6行交換模8余6、模8余7、模8余0和模8余1位置的元素;對(duì)于模8余3行和模8余7行,n=3;就具體的交換位置而言,模2(N+1)余(n+2N)為模8余7,模2(N+1)余(n+1+2N)=模8余8(模8余0),模2(N+1)余(n+2+2N)=模8余9(模8余1),模2(N+1)余(n+3+2N)=模2(N+1)余(2(N+1)+n-1)=模8余10(模8余2);即模8余3行和模8余7行交換模8余7、模8余0、模8余1和模8余2位置的元素;對(duì)于模8余4行和模8余0行,n=4;就具體的交換位置而言,模2(N+1)余(n+2N)為模8余8(模8余0),模2(N+1)余(n+1+2N)=模8余9(模8余1),模2(N+1)余(n+2+2N)=模8余10(模8余2),模2(N+1)余(n+3+2N)=模2(N+1)余(2(N+1)+n-1)=模8余11(模8余3);即模8余4行和模8余0行交換模8余0、模8余1、模8余2和模8余3位置的元素。
(IV)依次類(lèi)推,直到,達(dá)到N+1大于Z。
S3-1-3、對(duì)所述矢量處理器中的元素執(zhí)行位置左移操作,包括將保存第M行元素的矢量寄存器中的每一元素依次向左循環(huán)移動(dòng)(M-1)位;本步驟S3-1-3為步驟S3-1-1的逆過(guò)程。具體來(lái)說(shuō),保存矩陣第一行元素的矢量寄存器保持不變,保存矩陣第二行元素的矢量寄存器分別依次向左循環(huán)移動(dòng)一個(gè)元素的位置,保存矩陣第三行元素的矢量寄存器依次向左循環(huán)移動(dòng)兩個(gè)元素的位置,以此類(lèi)推,最后一行,保存矩陣第M行元素的寄存器依次向左循環(huán)移動(dòng)(M-1)個(gè)元素的位置。
可以看出,步驟S3-1-1至步驟S3-1-3的操作,都是利用矢量處理器的特性,通過(guò)矢量寄存器內(nèi)元素位置移動(dòng)和矢量寄存器之間元素位置交換完成小矩陣的轉(zhuǎn)置。
此外,還包括S3-1-4、對(duì)于存在0元素填充的情況,刪除所有填充的0元素。
上述步驟S3-1-1至步驟S3-1-4給出了行轉(zhuǎn)移的實(shí)現(xiàn)方案,如果采用列轉(zhuǎn)移,則步驟S3包括以下步驟S3-2-1、對(duì)所述矢量處理器中的元素執(zhí)行位置右移操作,包括將保存第M列元素的矢量寄存器中的每一元素依次向右循環(huán)移動(dòng)(M-1)位;S3-2-2、對(duì)矢量寄存器間元素執(zhí)行位置交換操作,包括當(dāng)(N+1)不大于Z時(shí),對(duì)保存模2(N+1)余n列和模2(N+1)余(n+2N)列元素的矢量寄存器,交換其處于模2(N+1)余(n+2N)、模2(N+1)余(n+1+2N)、……、模2(N+1)余(2(N+1)+n-2)、和模2(N+1)余(2(N+1)+n-1)位置的元素;其中,N取0、1、2、3……,n取1,2,……,(2N-1),2N;S3-2-3、對(duì)所述矢量處理器中的元素執(zhí)行位置左移操作,包括將保存第M列元素的矢量寄存器中的每一元素依次向左循環(huán)移動(dòng)(M-1)位;S3-2-4、刪除所有填充的0元素。
上述兩種方案所提供的都是在2Z×2Z矢量處理器中進(jìn)行小矩陣轉(zhuǎn)置的方案,但本發(fā)明并不局限于此。比如,對(duì)于3×3矢量處理器,通過(guò)相同的右移操作和左移操作步驟,以及交換第1、2行第2個(gè)元素,交換第1、3行第3個(gè)元素,交換第2、3行第一個(gè)元素,即可實(shí)現(xiàn)小矩陣轉(zhuǎn)置,在此不再贅述。
S4、將所述矢量處理器中的元素以隊(duì)列為單位輸出到內(nèi)存中,所述輸出地址為根據(jù)轉(zhuǎn)置規(guī)則進(jìn)行變換后的地址;本步驟是以矢量寄存器為單位,逐一將其輸出寫(xiě)入內(nèi)存;其中,每一輸出與轉(zhuǎn)置后小矩陣的一元素行或者元素列對(duì)應(yīng)??梢钥闯觯ㄟ^(guò)步驟S4,每一次的內(nèi)存寫(xiě)入操作都能夠?qū)懭胄【仃嚨囊恍?列元素;以矢量寄存器中包含Y個(gè)元素來(lái)說(shuō),只需要[M/Y]×N或者M(jìn)×[N/Y]次數(shù)據(jù)寫(xiě)操作,相較于相較于現(xiàn)有技術(shù)中每一次寫(xiě)入一個(gè)數(shù)據(jù),實(shí)現(xiàn)了寄存器→內(nèi)存的數(shù)據(jù)轉(zhuǎn)移效率的提高。
具體來(lái)說(shuō),按行轉(zhuǎn)移的步驟如下S4-1-1、計(jì)算所述矢量處理器輸入地址相對(duì)于首個(gè)矢量處理器輸入地址的第一偏移量;S4-1-2、根據(jù)所述第一偏移量和轉(zhuǎn)置規(guī)則,計(jì)算所述矢量處理器輸出地址相對(duì)于首個(gè)矢量處理器輸出地址的第二偏移量;S4-1-3、根據(jù)所述第二偏移量,將所述矢量寄存器中的元素以行為單位輸出到內(nèi)存中。
按列轉(zhuǎn)移的步驟如下S4-2-1、計(jì)算所述矢量處理器輸入地址相對(duì)于首個(gè)矢量處理器輸入地址的第一偏移量;S4-2-2、根據(jù)所述第一偏移量和轉(zhuǎn)置規(guī)則,計(jì)算所述矢量處理器輸出地址相對(duì)于首個(gè)矢量處理器輸出地址的第二偏移量;S4-2-3、根據(jù)所述第二偏移量,將所述矢量寄存器中的元素以列為單位輸出到內(nèi)存中。
其中,首個(gè)矢量處理器輸出地址可以由矢量處理器輸出轉(zhuǎn)置結(jié)果時(shí)確定,也可以由內(nèi)存寫(xiě)入矢量寄存器時(shí)分配好,具體采用哪一種方案,不會(huì)影響本發(fā)明的整體技術(shù)效果。
S5、將全部轉(zhuǎn)置后的小矩陣組合為所述待轉(zhuǎn)置矩陣的轉(zhuǎn)置矩陣;本步驟S5在內(nèi)存中完成,當(dāng)每一轉(zhuǎn)置后的小矩陣都被寫(xiě)入內(nèi)存時(shí),就構(gòu)成了一個(gè)完整的轉(zhuǎn)置矩陣。
通過(guò)上述實(shí)施例的步驟S1-S5,充分利用了矢量處理器的特性,將標(biāo)量運(yùn)算轉(zhuǎn)換為矢量運(yùn)算,使一個(gè)矩陣轉(zhuǎn)置只需要M×N/Y次數(shù)據(jù)讀操作和M×N/Y次數(shù)據(jù)寫(xiě)操作,以及少量的矢量交換、移位操作??梢钥闯?,采取了上述步驟之后,數(shù)據(jù)在內(nèi)存和寄存器之間的搬移時(shí)間可以極大地減少,從而有效地提高矩陣轉(zhuǎn)置的執(zhí)行速度。
需要指出,在上述實(shí)施例的描述中,涉及到了并行處理和串行處理兩種方式,為了本領(lǐng)域普通技術(shù)人員不致產(chǎn)生混淆,下面分別對(duì)兩種情況加以具體描述參見(jiàn)圖2,為并行實(shí)現(xiàn)矩陣轉(zhuǎn)置的方法示意圖,包括以下步驟首先,對(duì)于待轉(zhuǎn)置矩陣進(jìn)行劃分,即將待轉(zhuǎn)置矩陣棋盤(pán)式劃分為多個(gè)與矢量處理器有效容量匹配的小矩陣;其次,同時(shí)將多個(gè)劃分后的小矩陣并行輸入相應(yīng)數(shù)目的矢量處理器進(jìn)行矩陣轉(zhuǎn)置;具體步驟可以包括將多個(gè)小矩陣的元素以隊(duì)列為單位,并行地從內(nèi)存分別輸入到對(duì)應(yīng)的矢量處理器中,在矢量處理器中通過(guò)元素的位移和交換完成小矩陣轉(zhuǎn)置,并以隊(duì)列為單位輸出到內(nèi)存中;其中,如果矢量處理器數(shù)目足夠,可以實(shí)現(xiàn)全部小矩陣的同時(shí)輸入;否則,可以分批輸入。
然后,將全部轉(zhuǎn)置后的小矩陣組合為所述待轉(zhuǎn)置矩陣的轉(zhuǎn)置矩陣。
參見(jiàn)圖3,為串行實(shí)現(xiàn)矩陣轉(zhuǎn)置的方法示意圖,包括以下步驟首先,同樣對(duì)于待轉(zhuǎn)置矩陣進(jìn)行劃分,即將待轉(zhuǎn)置矩陣棋盤(pán)式劃分為多個(gè)與矢量處理器有效容量匹配的小矩陣;其次,將劃分后的一個(gè)小矩陣輸入一矢量處理器進(jìn)行矩陣轉(zhuǎn)置;具體步驟可以包括將該小矩陣的元素以隊(duì)列為單位,從內(nèi)存輸入到該矢量處理器中,在矢量處理器中通過(guò)元素的位移和交換完成小矩陣轉(zhuǎn)置,并以隊(duì)列為單位輸出到內(nèi)存中;然后,再將下一個(gè)小矩陣輸入該矢量處理器進(jìn)行矩陣轉(zhuǎn)置,方法與上述具體步驟相同;依次類(lèi)推,直至最后一個(gè)小矩陣處理完成;最后,全部小矩陣組合為所述待轉(zhuǎn)置矩陣的轉(zhuǎn)置矩陣。
可以看出,無(wú)論是采用串行處理還是采用并行處理,本發(fā)明所提供的技術(shù)方案都能夠利用矢量處理器實(shí)現(xiàn)對(duì)于矩陣的轉(zhuǎn)置;當(dāng)然,并行處理的效率要優(yōu)于串行處理。
下面,以32×16的矩陣(矩陣的每個(gè)元素為32比特)轉(zhuǎn)置為例,說(shuō)明本發(fā)明的具體實(shí)施方法。
在本例中,矢量處理器采用的是NXP公司的VD32040處理器,此處理器有16個(gè)矢量寄存器,每個(gè)矢量寄存器可以存放8個(gè)元素,每個(gè)元素為32比特的數(shù)據(jù);當(dāng)使用其一半數(shù)目的矢量寄存器用于小矩陣元素轉(zhuǎn)移存放,另一半用于為矢量寄存器之間元素交換提供支持時(shí),此矢量處理器的有效容量為8×8。
首先,根據(jù)矢量寄存器的大小和數(shù)量,將矩陣棋盤(pán)式劃分成適合矢量處理器的小矩陣。在上述VD32040處理器中,其有效容量為8×8,即可以支持8×8的矩陣轉(zhuǎn)置。所以,32×16的矩陣可以被分割成8個(gè)8×8小矩陣,如圖6A所示。
其次,對(duì)每一小矩陣,將其元素以行為單位從內(nèi)存轉(zhuǎn)移到對(duì)應(yīng)的矢量處理器;共占有8個(gè)矢量寄存器,執(zhí)行這一步驟后的8個(gè)矢量寄存器中數(shù)據(jù)排列情況如圖6B所示。
可以看出,本步驟寫(xiě)入矢量寄存器時(shí),每一小矩陣共執(zhí)行8次數(shù)據(jù)讀操作,8個(gè)小矩陣共執(zhí)行64次數(shù)據(jù)讀操作。
第三,矢量寄存器內(nèi)的元素位置右移矢量寄存器1的元素保持不變,矢量寄存器2的元素依次向右移動(dòng)1個(gè)元素的位置,矢量寄存器3的元素依次向右移動(dòng)2個(gè)元素的位置,……,以此類(lèi)推,矢量寄存器8的元素依次向右移動(dòng)7個(gè)元素的位置。執(zhí)行這一步驟后的8個(gè)矢量寄存器中數(shù)據(jù)排列情況如圖6C所示。
第四,矢量寄存器間的元素位置交換。
由于N取2的時(shí)候,2(N+1)=8,故此N不能夠取大于2的數(shù)值。因而,按照交換規(guī)則,矢量寄存器間的元素位置交換由三次交換實(shí)現(xiàn),即N分別取值0,1,2。映射到矢量寄存器中,如下面的描述(1)N=0,序號(hào)差1行(鄰行)交換偶數(shù)位置的元素矢量寄存器1和矢量寄存器2,矢量寄存器3和矢量寄存器4,矢量寄存器5和矢量寄存器6,矢量寄存器7和矢量寄存器8,交換第2,4,6,8位置的元素。執(zhí)行這一步驟后的8個(gè)矢量寄存器中數(shù)據(jù)排列情況如圖6D所示。
(2)N=1,序號(hào)差2行交換矢量寄存器1和矢量寄存器3,矢量寄存器5和矢量寄存器7,交換第3,4,7,8位置的元素;矢量寄存器2和矢量寄存器4,矢量寄存器6和矢量寄存器8,交換第4,5,8,1位置的元素。執(zhí)行這一步驟后的8個(gè)矢量寄存器中數(shù)據(jù)排列情況如圖6E所示。
(3)N=2,序號(hào)差4行交換矢量寄存器1和矢量寄存器5,交換第5,6,7,8位置的元素;矢量寄存器2和矢量寄存器6,交換第6,7,8,1位置的元素;矢量寄存器3和矢量寄存器7,交換第7,8,1,2位置的元素;矢量寄存器4和矢量寄存器8,交換第8,1,2,3位置的元素。執(zhí)行這一步驟后的8個(gè)矢量寄存器中數(shù)據(jù)排列情況如圖6F所示。
第五,矢量寄存器內(nèi)的元素位置左移矢量寄存器1的元素保持不變,矢量寄存器2的元素依次向左移動(dòng)1個(gè)元素的位置,矢量寄存器3的元素依次向左移動(dòng)2個(gè)元素的位置,……,以此類(lèi)推,矢量寄存器8的元素依次向左移動(dòng)7個(gè)元素的位置。至此,8個(gè)矢量寄存器中存放的是轉(zhuǎn)置后的小矩陣。執(zhí)行這一步驟后的8個(gè)矢量寄存器中數(shù)據(jù)排列情況如圖6G所示。
第六、將小矩陣的元素從8個(gè)矢量寄存器依次轉(zhuǎn)移到內(nèi)存當(dāng)中,所述輸出地址為根據(jù)轉(zhuǎn)置規(guī)則進(jìn)行變換后的地址;全部轉(zhuǎn)置后的小矩陣組合成為該32×16矩陣的轉(zhuǎn)置矩陣。
可以看出,本步驟寫(xiě)入內(nèi)存時(shí),每一小矩陣共執(zhí)行8次數(shù)據(jù)寫(xiě)操作,8個(gè)小矩陣共執(zhí)行64次數(shù)據(jù)寫(xiě)操作。
其中,地址變換的規(guī)則遵從矩陣轉(zhuǎn)置的性質(zhì)即按行讀入,按列輸出的規(guī)則;以圖6A中的R4為例,當(dāng)按行輸出時(shí),其相對(duì)于R0(設(shè)為地址Addr1)的第一偏移量為4個(gè)單位(Addr1+4個(gè)小矩陣的偏移),則按列輸出時(shí),其輸出地址相對(duì)于R0T的偏移量為2個(gè)單位(Addr2+2個(gè)小矩陣的偏移);則根據(jù)所述第二偏移量,將所述矢量寄存器中的元素以行為單位輸出到內(nèi)存中即可,如圖6H所示。參見(jiàn)圖6H,為最終內(nèi)存中小矩陣的存放情況。
本發(fā)明還提供了一種利用矢量處理器實(shí)現(xiàn)矩陣轉(zhuǎn)置的處理系統(tǒng),如圖7所示,為一實(shí)施例的系統(tǒng)框圖,包括內(nèi)存單元U1、矢量處理器U2和轉(zhuǎn)置控制器U3;所述轉(zhuǎn)置控制器U3與所述內(nèi)存單元U1和所述矢量處理器U2連接,用于指令所述內(nèi)存單元U1將待轉(zhuǎn)置矩陣棋盤(pán)式劃分為多個(gè)與矢量處理器U2有效容量匹配的小矩陣,并進(jìn)行轉(zhuǎn)置后小矩陣的合并;其中,劃分的原則是使后續(xù)的小矩陣轉(zhuǎn)置操作能在寄存器內(nèi)完成,一般來(lái)說(shuō),使矢量寄存器組U2的一半可以用于寄存一個(gè)小矩陣的所有數(shù)據(jù),并且在每個(gè)矢量寄存器內(nèi),至多只包含一行的元素;還用于指令所述矢量處理器U2進(jìn)行與所述內(nèi)存單元U1的小矩陣元素讀/寫(xiě);其中,所述矢量處理器為一個(gè)或多個(gè),分別對(duì)應(yīng)串行處理和并行處理兩種情況。圖7所示為多個(gè)矢量處理器U2的情況,每個(gè)矢量處理器都包括多個(gè)矢量寄存器(圖中未示),每一矢量寄存器用于作為所述小矩陣至多一行元素的載體,進(jìn)行位移和交換。
所述每一矢量處理器U2用于根據(jù)所述轉(zhuǎn)置控制器U3的指令,以隊(duì)列為單位從所述內(nèi)存單元U1中讀取所述小矩陣的元素,并以隊(duì)列為單位向所述內(nèi)存單元U1寫(xiě)入轉(zhuǎn)置后的小矩陣的元素;顯然,當(dāng)矢量寄存器中包含Y個(gè)元素時(shí),只需要M/Y×N次數(shù)據(jù)讀操作和M/Y×N次數(shù)據(jù)寫(xiě)操作;以及,所述每一矢量處理器U2還用于通過(guò)元素的位移和交換操作實(shí)現(xiàn)小矩陣的轉(zhuǎn)置。
通過(guò)本發(fā)明提供的處理系統(tǒng),利用了矢量處理器的特性,將標(biāo)量運(yùn)算轉(zhuǎn)換為矢量運(yùn)算,使一個(gè)矩陣轉(zhuǎn)置只需要M/Y×N次數(shù)據(jù)讀操作和M/Y×N次數(shù)據(jù)寫(xiě)操作,以及少量的矢量交換、移位操作??梢钥闯?,數(shù)據(jù)在內(nèi)存和寄存器之間的搬移時(shí)間可以極大地減少,從而有效地提高矩陣轉(zhuǎn)置的執(zhí)行速度。
其中,當(dāng)所述矢量處理器的有效容量為2Z×2Z時(shí),其包括X×2Z個(gè)矢量寄存器用于矩陣轉(zhuǎn)置,且每一矢量寄存器包含Y個(gè)元素,X與Y之積為2Z;其中,X取1、2、3……。
所述矢量處理器U2中還包括運(yùn)算單元(圖中未示),用于保存元素位移和交換規(guī)則;當(dāng)所述矢量處理器的有效容量為2Z×2Z為例,進(jìn)行行轉(zhuǎn)移時(shí),所述元素位移和交換規(guī)則包括將保存第M行元素的矢量寄存器中的每一元素依次向右循環(huán)移動(dòng)(M-1)位;在2(N+1)不大于行數(shù)/列數(shù)的條件下,對(duì)保存模2(N+1)余n行和模2(N+1)余(n+2N)行元素的矢量寄存器,交換其處于模2(N+1)余(n+2N)、模2(N+1)余(n+1+2N)、……、模2(N+1)余(2(N+1)+n-2)、和模2(N+1)余(2(N+1)+n-1)位置的元素;其中,N取0、1、2、3……,n取1,2,……,(2N-1),2N;將保存第M行元素的矢量寄存器中的每一元素依次向左循環(huán)移動(dòng)(M-1)位。
進(jìn)行列轉(zhuǎn)移時(shí),矢量寄存器中元素位移和交換規(guī)則類(lèi)似,在此不再贅述。
最后所應(yīng)說(shuō)明的是,以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非限制,盡管參照較佳實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本發(fā)明技術(shù)方案的精神和范圍。
權(quán)利要求
1.一種利用矢量處理器實(shí)現(xiàn)矩陣轉(zhuǎn)置的方法,其特征在于,包括以下步驟S1、將待轉(zhuǎn)置矩陣棋盤(pán)式劃分為多個(gè)與矢量處理器有效容量匹配的小矩陣;S2、將每一小矩陣的元素以隊(duì)列為單位從內(nèi)存輸入到矢量處理器中;S3、通過(guò)在所述矢量處理器中元素的位移和交換,完成小矩陣轉(zhuǎn)置;S4、將所述矢量處理器中的元素以隊(duì)列為單位輸出到內(nèi)存中,所述輸出地址為根據(jù)轉(zhuǎn)置規(guī)則進(jìn)行變換后的地址;S5、將全部轉(zhuǎn)置后的小矩陣組合為所述待轉(zhuǎn)置矩陣的轉(zhuǎn)置矩陣。
2.根據(jù)權(quán)利要求1所述的利用矢量處理器實(shí)現(xiàn)矩陣轉(zhuǎn)置的方法,其特征在于,所述步驟S1包括將待轉(zhuǎn)置矩陣棋盤(pán)式劃分為多個(gè)S×T小矩陣,所述S、T不大于2Z;其中,2Z×2Z為所述矢量處理器的有效容量。
3.根據(jù)權(quán)利要求1或2所述的利用矢量處理器實(shí)現(xiàn)矩陣轉(zhuǎn)置的方法,其特征在于,所述以隊(duì)列為單位進(jìn)行小矩陣元素轉(zhuǎn)移為以行/列為單位進(jìn)行小矩陣元素轉(zhuǎn)移。
4.根據(jù)權(quán)利要求3所述的利用矢量處理器實(shí)現(xiàn)矩陣轉(zhuǎn)置的方法,其特征在于,當(dāng)以行/列為單位進(jìn)行小矩陣元素轉(zhuǎn)移時(shí),所述步驟S2包括將每一小矩陣條帶式劃分為元素行/列,每一元素行/列與所述矢量處理器的一個(gè)或多個(gè)矢量寄存器對(duì)應(yīng);逐行/列將所述小矩陣的元素行/列寫(xiě)入對(duì)應(yīng)的矢量寄存器,所述矢量處理器未被占用的位置以0元素進(jìn)行填充。
5.根據(jù)權(quán)利要求3所述的利用矢量處理器實(shí)現(xiàn)矩陣轉(zhuǎn)置的方法,其特征在于,所述步驟S3包括對(duì)所述矢量處理器中的元素執(zhí)行位置右移操作,包括將保存第M行/列元素的矢量寄存器中的每一元素依次向右循環(huán)移動(dòng)(M-1)位;對(duì)矢量寄存器間元素執(zhí)行位置交換操作,包括當(dāng)2(N+1)不大于行數(shù)/列數(shù)時(shí),對(duì)保存模2(N+1)余n行/列和模2(N+1)余(n+2N)行/列元素的矢量寄存器,交換其處于模2(N+1)余(n+2N)、模2(N+1)余(n+1+2N)、……、模2(N+1)余(2(N+1)+n-2)、和模2(N+1)余(2(N+1)+n-1)位置的元素;其中,N取0、1、2、3……,n取1,2,……,(2N-1),2N;對(duì)所述矢量處理器中的元素執(zhí)行位置左移操作,包括將保存第M行/列元素的矢量寄存器中的每一元素依次向左循環(huán)移動(dòng)(M-1)位;刪除所有填充的0元素。
6.根據(jù)權(quán)利要求3所述的利用矢量處理器實(shí)現(xiàn)矩陣轉(zhuǎn)置的方法,其特征在于,所述步驟S4包括計(jì)算所述矢量處理器輸入地址相對(duì)于首個(gè)矢量處理器輸入地址的第一偏移量;根據(jù)所述第一偏移量和轉(zhuǎn)置規(guī)則,計(jì)算所述矢量處理器輸出地址相對(duì)于首個(gè)矢量處理器輸出地址的第二偏移量;根據(jù)所述第二偏移量,將所述矢量寄存器中的元素以行/列為單位輸出到內(nèi)存中。
7.一種利用矢量處理器實(shí)現(xiàn)矩陣轉(zhuǎn)置的處理系統(tǒng),包括一內(nèi)存單元,用于保存待轉(zhuǎn)置矩陣和轉(zhuǎn)置后的矩陣;其特征在于,還包括矢量處理器和一轉(zhuǎn)置控制器;所述轉(zhuǎn)置控制器與所述內(nèi)存單元和所述矢量處理器連接,用于指令所述內(nèi)存單元將待轉(zhuǎn)置矩陣棋盤(pán)式劃分為多個(gè)與矢量處理器有效容量匹配的小矩陣以及指令所述內(nèi)存單元將轉(zhuǎn)置后的小矩陣合并;還用于指令所述矢量處理器進(jìn)行與所述內(nèi)存單元的小矩陣元素讀/寫(xiě);所述矢量處理器用于根據(jù)所述轉(zhuǎn)置控制器的指令,進(jìn)行小矩陣元素讀/寫(xiě),通過(guò)元素的位移和交換操作進(jìn)行小矩陣轉(zhuǎn)置,并進(jìn)行輸出地址變換。
8.根據(jù)權(quán)利要求7所述的利用矢量處理器實(shí)現(xiàn)矩陣轉(zhuǎn)置的處理系統(tǒng),其特征在于,所述矢量處理器為一個(gè)或多個(gè)。
9.根據(jù)權(quán)利要求7或8所述的利用矢量處理器實(shí)現(xiàn)矩陣轉(zhuǎn)置的處理系統(tǒng),其特征在于,所述矢量處理器的有效容量為2Z×2Z,包括X×2Z個(gè)矢量寄存器用于矩陣轉(zhuǎn)置,且每一矢量寄存器包含2Z/X個(gè)元素,所述X取1或1以上的整數(shù)。
10.根據(jù)權(quán)利要求9所述的利用矢量處理器實(shí)現(xiàn)矩陣轉(zhuǎn)置的處理系統(tǒng),其特征在于,所述矢量處理器中包括運(yùn)算單元,用于保存元素位移和交換規(guī)則;所述元素位移和交換規(guī)則包括將保存第M行/列元素的矢量寄存器中的每一元素依次向右循環(huán)移動(dòng)(M-1)位;在2(N+1)不大于行數(shù)/列數(shù)的條件下,對(duì)保存模2(N+1)余n行/列和模2(N+1)余(n+2N)行/列元素的矢量寄存器,交換其處于模2(N+1)余(n+2N)、模2(N+1)余(n+1+2N)、……、模2(N+1)余(2(N+1)+n-2)、和模2(N+1)余(2(N+1)+n-1)位置的元素;其中,N取0、1、2、3……,n取1,2,……, (2N-1),2N;將保存第M行/列元素的矢量寄存器中的每一元素依次向左循環(huán)移動(dòng)(M-1)位。
全文摘要
本發(fā)明公開(kāi)了一種利用矢量處理器實(shí)現(xiàn)矩陣轉(zhuǎn)置的方法和處理系統(tǒng)。該方法包括將待轉(zhuǎn)置矩陣棋盤(pán)式劃分為多個(gè)與矢量處理器有效容量匹配的小矩陣;將每一小矩陣的元素以隊(duì)列為單位從內(nèi)存輸入到矢量處理器中;通過(guò)在所述矢量處理器中元素的位移和交換,完成小矩陣轉(zhuǎn)置;將所述矢量處理器中的元素以隊(duì)列為單位輸出到內(nèi)存中,所述輸出地址為根據(jù)轉(zhuǎn)置規(guī)則進(jìn)行變換后的地址;以及,將全部轉(zhuǎn)置后的小矩陣組合為待轉(zhuǎn)置矩陣的轉(zhuǎn)置矩陣。通過(guò)本發(fā)明公開(kāi)的方法和系統(tǒng),對(duì)于M×N的矩陣進(jìn)行轉(zhuǎn)置,只需要[M/Y]×N次數(shù)據(jù)讀操作和[M/Y]×N次數(shù)據(jù)寫(xiě)操作,使數(shù)據(jù)在內(nèi)存和寄存器之間的搬移時(shí)間大大減少,有效的提高了矩陣轉(zhuǎn)置的執(zhí)行速度。
文檔編號(hào)G06F17/16GK101093474SQ200710141188
公開(kāi)日2007年12月26日 申請(qǐng)日期2007年8月13日 優(yōu)先權(quán)日2007年8月13日
發(fā)明者馬振國(guó) 申請(qǐng)人:北京天碁科技有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
九台市| 关岭| 锡林浩特市| 永安市| 盈江县| 图木舒克市| 正安县| 新河县| 通许县| 黎平县| 公安县| 天峻县| 五台县| 曲水县| 上思县| 新野县| 峡江县| 兴海县| 武夷山市| 吴忠市| 姜堰市| 宾川县| 泸水县| 新乐市| 衡阳市| 张北县| 沭阳县| 手机| 房山区| 远安县| 珠海市| 玛沁县| 普陀区| 视频| 尼木县| 阳原县| 桑日县| 沾化县| 扶风县| 河津市| 茂名市|